0

可以说我有

CREATE  FUNCTION [sec].[PartyGroupAccessPredicate](@PartyGroupId uniqueidentifier)
    RETURNS TABLE     
    WITH SCHEMABINDING
AS
    RETURN SELECT 1 AS accessResult
        FROM [sec].[PartyGroupPartyLink] partyGroupLink
        WHERE
        (
            partyGroupLink.PartyGroupId = @PartyGroupId AND partyGroupLink.PartyId = CAST(SESSION_CONTEXT(N'PartyId') AS VARCHAR(50))
            AND @PartyGroupId IS NOT NULL
        )
        
GO



CREATE SECURITY POLICY [sec].[PartyGroupAccessPolicy] 
ADD FILTER PREDICATE [sec].[PartyGroupAccessPredicate]([PartyGroupId]) ON [int].[Program]

...是否会为每一行执行安全策略,或者 sql 是否会在仅执行一次的情况下进行一些优化?

有没有更好的方法可以提高性能?

4

1 回答 1

0

安全策略应用于行级别。这就是在 SQL Server 中实现行级安全性的方式。参考:行级安全性 关于您对性能的查询,如果您需要应用多个过滤器,那么它将产生影响。

于 2020-09-07T01:58:54.160 回答