将过滤器和块谓词应用于新表

时间:2017-06-13 08:26:00

标签: sql-server database row-level-security

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

1 个答案:

答案 0 :(得分:0)

您能否确认数据库中有谓词函数(RLS.fn_securitypredicate)?

它将出现在Sql Server MS下 - >可编程性 - >功能 - >表值函数:

enter image description here