我必须授予REFERENCES
权限才能登录,例如sql_login
。如何将REFERENCES权限授予所有表
我可以给补助REFERENCES
允许单个表像
GRANT REFERENCES ON Mytable TO sql_login
有什么办法授予REFERENCES
允许我登录到我的所有表或以任何方式是错的
我必须授予REFERENCES
权限才能登录,例如sql_login
。如何将REFERENCES权限授予所有表
我可以给补助REFERENCES
允许单个表像
GRANT REFERENCES ON Mytable TO sql_login
有什么办法授予REFERENCES
允许我登录到我的所有表或以任何方式是错的
我自己找到了办法做到这一点
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)
不知道这是实现这一
事实证明的理想方法,明确安全对象不需要在GRANT
声明。也就是说,你可以说:
GRANT REFERENCES TO [sql_login];
注意,这不只是对其中这些引用权限适用表。从the documentation,它也适用于:
我说,只有让你明白,你可能在你不打算使用这种方法进行对象授予权限。但好处是你不必再次管理这些权限。也就是说,如果/当您向数据库添加新表时,用户将自动获得REFERENCES权限。
我只想要它的表单。谢谢您的帮助。 –