我正在使用实施了行级安全性的 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 访问/查看它们?