【问题标题】:Apply filter and block predicate to a new table将过滤器和阻止谓词应用于新表
【发布时间】: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


【解决方案1】:

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

会出现在Sql Server MS下-> Programmability -> Functions -> Table-valued Functions:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-13
    • 1970-01-01
    • 1970-01-01
    • 2022-11-26
    • 2011-12-12
    • 2017-04-04
    相关资源
    最近更新 更多