如何授予对所有表的 REFERENCES 权限
How to Grant REFERENCES permission to all tables
我必须授予 REFERENCES
登录权限,比如 sql_login
。
我可以授予 REFERENCES
个人 table 的权限,比如
GRANT REFERENCES ON Mytable TO sql_login
有什么方法可以授予 REFERENCES
我登录所有 table 的权限,或者有任何错误
我自己找到了一种方法来做到这一点
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];
请注意,REFERENCES 权限不仅仅适用于 tables。来自the documentation,也适用于:
- 汇总
- 组装
- 非对称密钥
- 证书
- 合同
- 数据库
- 全文目录
- 全文停用列表
- 函数
- 消息类型
- 程序
- 队列
- 规则
- 架构
- 搜索属性列表
- 序列对象对称密钥
- 同义词
- TABLE
- 类型
- VIEW 和
- XML 架构集合
我这么说只是为了让您了解您可能会授予您不打算使用此方法的对象的权限。但好处是您不必再管理这些权限。也就是说,if/when 你添加一个新的 table 到你的数据库,你的用户将自动获得它的 REFERENCES 权限。
我必须授予 REFERENCES
登录权限,比如 sql_login
。
我可以授予 REFERENCES
个人 table 的权限,比如
GRANT REFERENCES ON Mytable TO sql_login
有什么方法可以授予 REFERENCES
我登录所有 table 的权限,或者有任何错误
我自己找到了一种方法来做到这一点
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];
请注意,REFERENCES 权限不仅仅适用于 tables。来自the documentation,也适用于:
- 汇总
- 组装
- 非对称密钥
- 证书
- 合同
- 数据库
- 全文目录
- 全文停用列表
- 函数
- 消息类型
- 程序
- 队列
- 规则
- 架构
- 搜索属性列表
- 序列对象对称密钥
- 同义词
- TABLE
- 类型
- VIEW 和
- XML 架构集合
我这么说只是为了让您了解您可能会授予您不打算使用此方法的对象的权限。但好处是您不必再管理这些权限。也就是说,if/when 你添加一个新的 table 到你的数据库,你的用户将自动获得它的 REFERENCES 权限。