首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >SQL Server :在所有数据库上运行脚本

SQL Server :在所有数据库上运行脚本
EN

Stack Overflow用户
提问于 2018-07-18 17:01:12
回答 2查看 3.8K关注 0票数 2

我有一个SQL脚本,其中包含一个函数(函数在脚本末尾删除)、临时表定义和变量来处理数据,这些数据为数据库提供了一行结果。

它可以工作,但我需要运行并获得1000个数据库的所有结果。单独运行脚本似乎是不可能的。

我已经找到了sp_MSForEachDB的单个命令行示例,但我有一个完整的脚本,无法让它以这种方式工作。

有没有办法在所有数据库上运行一个脚本?

感谢您的回复

EN

回答 2

Stack Overflow用户

发布于 2018-07-18 19:49:59

我并不是说这是一个好主意,因为我们并不真正知道您运行的这个脚本是做什么的,但这应该是可行的。我不羡慕您将所有的单引号放在正确位置的痛苦,但这是我们使用未记录的、不受支持的存储过程所付出的代价。

代码语言:javascript
代码运行次数:0
运行
复制
DECLARE @sqlText varchar(max); 

SET @sqlText = 'IF ''?'' NOT IN(''master'', ''model'', ''msdb'', ''tempdb'') 
  BEGIN 
    USE ? 
    EXEC(''CREATE <functions, tables, what have you>'') 
  END';

EXECUTE sp_MSforeachdb @sqlText;
票数 2
EN

Stack Overflow用户

发布于 2018-07-18 18:22:43

您好,在SSMS中,您可以使用sqlcmd命令为选定的数据库运行脚本。例如,在这里,我想在两个不同的数据库中运行我的脚本,因为我已经将脚本保存在本地。并使用调用它:r "C:\temp\test1.sql"

尽管如此,我仍然在考虑使用循环的另一种方法。

启用sql模式SSMS >查询> SQLCMD模式

代码语言:javascript
代码运行次数:0
运行
复制
use test
:r  "C:\temp\test1.sql"
use S2VTST6
:r  "C:\temp\test1.sql"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51397798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档