0

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

4

1 回答 1

0

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

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

在此处输入图像描述

于 2018-06-14T23:32:40.713 回答