Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server安全策略是按行执行还是按选择执行_Sql_Sql Server_Row Level Security_Security Policy - Fatal编程技术网

SQL Server安全策略是按行执行还是按选择执行

SQL Server安全策略是按行执行还是按选择执行,sql,sql-server,row-level-security,security-policy,Sql,Sql Server,Row Level Security,Security Policy,假设我有 CREATE FUNCTION [sec].[PartyGroupAccessPredicate](@PartyGroupId uniqueidentifier) RETURNS TABLE WITH SCHEMABINDING AS RETURN SELECT 1 AS accessResult FROM [sec].[PartyGroupPartyLink] partyGroupLink WHERE

假设我有

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 Server中实现行级安全性。 参考:
关于性能查询,如果您需要应用多个过滤器,那么它将产生影响。

如果必须下注,我会认为它每行执行一次。如果是这样的话,内存优化表可能会有所帮助,如果您可以使用的话。