繁体   English   中英

在多个数据库(SQL Server)上运行脚本?

[英]Run script on multiple DBs (SQL Server)?

假设我有一些更新脚本:

update sometable set somecolumn = 'somevalue' where xyz = 0

现在,我们有多个数据库,例如DB1,DB2,DB3等。 如何在不手动执行的情况下在所有脚本上运行此脚本?

谢谢 :)

您可以使用游标执行此操作

  • 获取局域网或网络中所有服务器的列表

  • 为此创建光标

  • 比使用sp_executesql运行带有forpart查询的更新脚本

     set ANSI_NULLS ON set QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [sp_cross_db_query] @SQLQuery varchar(400) AS DECLARE @DB_Name varchar(100) DECLARE database_cursor CURSOR FOR SELECT DatabaseName FROM Management.dbo.Customers OPEN database_cursor FETCH NEXT FROM database_cursor INTO @DB_Name WHILE @@FETCH_STATUS = 0 BEGIN exec( 'USE [' + @DB_Name + '];' + @SQLQuery ) FETCH NEXT FROM database_cursor INTO @DB_Name END CLOSE database_cursor DEALLOCATE database_cursor 

    运行查询

      exec sp_cross_db_query 'SELECT count(*) FROM Products' 

如果需要所有数据库,则可以使用sp_MSforeachdb

http://www.databasejournal.com/features/mssql/article.php/3441031/SQL-Server-Undocumented-Stored-Procedures-spMSforeachtable-and-spMSforeachdb.htm

EXEC sp_MSforeachdb @command1="UPDATE ?..sometable SET somecolumn='somevalue' WHERE xyz=0"

或者对于特定的数据库,您可以尝试一些逻辑,如下所示:

http://www.sqlservercurry.com/2009/04/6-common-uses-of-undocumented-stored.html

希望能有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM