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中实现行级安全性。 参考:
关于性能查询,如果您需要应用多个过滤器,那么它将产生影响。如果必须下注,我会认为它每行执行一次。如果是这样的话,内存优化表可能会有所帮助,如果您可以使用的话。