sql - sp_MSforeachdb 问题

标签 sql sql-server stored-procedures

我正在尝试为开发人员的工作环境中的存储过程分配 VIEW DEFINITION 访问权限,并将下面的查询作为结果运行到文本,然后复制输出并作为结果运行到网格:

select 'GRANT VIEW DEFINITION ON ' + quotename(specific_schema) 
+ '.' + quotename(specific_name)
+ ' TO ' + 'TestAcct'
  from INFORMATION_SCHEMA.routines
where routine_type = 'PROCEDURE'

我遇到的问题是我必须针对多个服务器上的每个数据库执行此操作。我尝试使用“sp_MSforeachdb”运行它,但是当我设置查询时它不喜欢我的选择语句。关于如何为所有数据库格式化上述查询的任何想法,以便我可以复制输出并针对服务器而不是每个单独的数据库运行它?

最佳答案

EXEC sp_MSforeachdb 
'SELECT ''GRANT VIEW DEFINITION ON '' + quotename(''?'') + ''.'' + quotename(specific_schema) 
+ ''.'' + quotename(specific_name)
+ '' TO '' + ''TestAcct'' AS ''?''
FROM ?.INFORMATION_SCHEMA.routines
WHERE routine_type = ''PROCEDURE'''

关于sql - sp_MSforeachdb 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14412336/

相关文章:

用于从特定字符串中提取数字的 Mysql 正则表达式或函数

sql - 在数组列上查找重复值

php - 我应该使用 php 还是我的 sql 将数据插入表中

mysql 在存储过程中使用 tee

sql - 使用 union all 概念时的小数位问题

mysql - 限制一列的结果

sql-server - SQL Server 依赖项

java - hibernate 中的@OneToMany

sql-server - 用于带有和或条件的表的案例陈述?

MySQL创建存储过程语法错误问题