【发布时间】:2018-06-15 07:32:40
【问题描述】:
我正在使用实施了行级安全性的 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 访问/查看它们?
【问题讨论】:
标签: sql-server database row-level-security