小编典典

如何授予对所有表的引用权限

sql

我必须授予REFERENCES登录说的权限sql_login

我可以授予REFERENCES单个表的授予权限,例如

GRANT REFERENCES ON Mytable TO sql_login

有什么办法可以授予REFERENCES我登录所有表的权限,还是有什么错误呢?


阅读 212

收藏
2021-05-23

共1个答案

小编典典

我自己找到了一种方法

DECLARE @sql VARCHAR(max) = ''

SET @sql =(SELECT distinct Concat('GRANT REFERENCES ON ', TABLE_NAME, ' TO sql_login; ')
           FROM   INFORMATION_SCHEMA.TABLE_CONSTRAINTS
           WHERE  CONSTRAINT_TYPE IN ( 'PRIMARY KEY', 'UNIQUE' )
                  AND table_name IS NOT NULL
           FOR xml path(''))

--print @sql
EXEC (@sql)

sys.tables 版本

DECLARE @sql VARCHAR(max) = ''

SET @sql =(SELECT Concat('GRANT REFERENCES ON ', name, ' TO sql_login; ')
           FROM   sys.tables
           WHERE  Objectproperty(OBJECT_ID, 'TableHasPrimaryKey') = 1
                  AND type = 'u'
           FOR xml path(''))

--print @sql
EXEC (@sql)

不确定这是否是实现此目标的理想方法

2021-05-23