[英]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
:
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.