...
[Netid] [varchar](30) NULL
) ON [PRIMARY]
CREATE TABLE [dbo].[Orders](
...
[ACCT_NBR] [varchar](10) NULL
) ON [PRIMARY]
Create Function fn_securitypredicate (@ACCT_NBR sysname)
returns table with Schemabinding
as
return select 1 as [fn_securityPredicate_result]
...
where (Netid = user_name() and @ACCT_NBR = ACCT_NBR)
union all
select 1 as [fn_securityPredicate_result]
where OR IS_SRVROLEMEMBER(N'sysadmin') = 1
...
Create security Policy dbo.fn_security
add Filter Predicate dbo.fn_securitypredicate(ACCT_NBR)on dbo.orders) on dbo.orders
WITH (STATE = ON, SCHEMABINDING = ON)
Testing Result
EXECUTE AS USER = 'bb57';
select * from dbo.predicate_tab order by netid asc
select * from dbo.orders
REVERT;