Pரத*_*ீப் 4 sql sql-server grant
我必须授予REFERENCES登录权限说sql_login。
我可以授予REFERENCES单个表的权限,例如
GRANT REFERENCES ON Mytable TO sql_login
Run Code Online (Sandbox Code Playgroud)
有什么方法可以授予REFERENCES我登录所有表的权限,或者有任何错误
事实证明,GRANT语句中不需要显式安全对象。也就是说,你可以说:
GRANT REFERENCES TO [sql_login];
请注意,这不仅仅是 REFERENCES 权限适用的表。从文档中,它也适用于:
我这么说只是为了让您意识到您可能会授予对您不打算使用这种方法的对象的权限。但好处是您将不再需要管理这些权限。也就是说,如果/当您向数据库添加新表时,您的用户将自动获得它的 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)
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
不确定这是实现这一目标的理想方法
| 归档时间: |
|
| 查看次数: |
11063 次 |
| 最近记录: |