Я работаю с базой данных SQL Server, в которой реализована безопасность на уровне строк. Чтобы получить доступ к контенту для определенного пользователя, мне нужно добавить это к запросу SQL:
EXEC SP_SET_SESSION_CONTEXT @key=N'UserId', @value=1
Это прекрасно работает для существующих таблиц в базе данных. Однако мне нужно добавить новую таблицу в базу данных, и я не могу добавить ту же безопасность в свою новую таблицу.
Так выглядят свойства существующей таблицы
Так выглядят новые свойства таблицы
Это код, который я нашел в документах Microsoft и реализовал его.
CREATE SECURITY POLICY RLS.NewTable
ADD FILTER PREDICATE RLS.fn_securitypredicate(AppUserId)
ON dbo.NewTable,
ADD BLOCK PREDICATE RLS.fn_securitypredicate(AppUserId)
ON dbo.NewTable AFTER INSERT
WITH (STATE = ON);
Очевидно, я получил ошибку:
Не удается найти объект «RLS.fn_securitypredicate», или этот объект не является встроенной функцией с табличным значением.
Теперь я не знаю, где найти правильный предикат блока/фильтра для использования в новой таблице.
TL;DR: где в базе данных SQL Server перечислены предикаты RLS и как мне получить к ним доступ/просмотреть их с помощью Microsoft SQL Server Management Studio?