Sql 如何向所有表授予引用权限
我必须授予Sql 如何向所有表授予引用权限,sql,sql-server,grant,Sql,Sql Server,Grant,我必须授予引用登录权限,比如sql\u登录 我可以授予引用对单个表的权限,如 GRANT REFERENCES ON Mytable TO sql_login 有没有办法授予引用权限,让我登录到我所有的表,或者我有任何错误我自己找到了这样做的方法 DECLARE @sql VARCHAR(max) = '' SET @sql =(SELECT distinct Concat('GRANT REFERENCES ON ', TABLE_NAME, ' TO sql_login; ')
引用
登录权限,比如sql\u登录
我可以授予引用
对单个表的权限,如
GRANT REFERENCES ON Mytable TO sql_login
有没有办法授予
引用
权限,让我登录到我所有的表,或者我有任何错误我自己找到了这样做的方法
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)
系统表
版本
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
语句中不需要显式的安全性。也就是说,你可以说:
授予对[sql_login]的引用代码>
请注意,引用权限不仅适用于表。从,它也适用于:
- 聚合
- 装配
- 非对称密钥
- 证书
- 合同
- 数据库
- 全文目录
- 全文禁止列表
- 作用
- 消息类型
- 程序
- 排队
- 统治
- 模式
- 搜索属性列表
- 序列对象对称密钥
- 同义词
- 桌子
- 类型
- 查看和
- XML架构集合
我这样说只是为了让您了解,您可能正在对不打算使用这种方法的对象授予权限。但好处是,您不再需要管理这些权限。也就是说,如果/当您向数据库中添加一个新表时,您的用户将自动获得该表的引用权限。我只希望它仅用于表。谢谢你的帮助。