【问题标题】:Is SQL Server Security Policy executed per row or per selectSQL Server 安全策略是按行执行还是按选择执行
【发布时间】:2020-12-25 05:57:38
【问题描述】:

假设我有

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 是否会在仅执行一次的情况下进行一些优化?

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

【问题讨论】:

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-24
    • 2011-06-04
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多