我需要授予登录名为 sql_login
的用户 REFERENCES
权限。
我可以像这样单独授予某个表的 REFERENCES
权限:
GRANT REFERENCES ON Mytable TO sql_login
我是否有办法将REFERENCES
权限授予我的登录用户以访问所有表格,或者我错了吗?
我需要授予登录名为 sql_login
的用户 REFERENCES
权限。
我可以像这样单独授予某个表的 REFERENCES
权限:
GRANT REFERENCES ON Mytable TO sql_login
我是否有办法将REFERENCES
权限授予我的登录用户以访问所有表格,或者我错了吗?
GRANT
语句中不需要显式指定可保护的对象。也就是说,你可以这样写:GRANT REFERENCES TO [sql_login];
请注意,REFERENCE 权限不仅适用于表格,根据文档,它还适用于:
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)
不确定这是实现这个目标的理想方式