我必须向登录sql_login
授予REFERENCES
权限。
我可以将授予GRANT REFERENCES ON Mytable TO sql_login
权限授予个人表格,例如
REFERENCES
有没有办法授予time_end = ((Date.today + 1).to_time - 1/1001).utc.iso8601(3)
=> "2016-09-28T21:59:59.999Z"
我登录所有桌面的权限,或者以任何方式出错?
答案 0 :(得分:3)
我自己找到了一种方法来做到这一点
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)
不确定这是实现此目标的理想方式
答案 1 :(得分:3)
事实证明,GRANT
语句中不需要明确的安全措施。也就是说,你可以说:
GRANT REFERENCES TO [sql_login];
请注意,不仅仅是REFERENCES权限适用的表。从the documentation起,它也适用于:
我这样说只是为了让您感谢您可能会授予您不希望使用此方法的对象的权限。但好处是你不必再次管理这些权限。也就是说,如果/当您向数据库添加新表时,您的用户将自动获得它的REFERENCES权限。