我正在使用已实现行级安全性的SQL Server数据库。要访问某个用户的内容,我需要将其附加到SQL查询:
EXEC SP_SET_SESSION_CONTEXT @key=N'UserId', @value=1
这适用于数据库中的现有表。但是我必须在数据库中添加一个新表,而且我无法在新表中添加相同的安全性。
This is how an existing table properties looks like
This is how the new table properties looks like
这是我在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访问/查看它们?