我有一个云服务器,在其中托管了我的客户的Web应用程序。每个客户在IIS中都有不同的SQL数据库和网站。每当我想执行sql查询以更新某些内容时,都必须在每个数据库中手动执行此操作。几乎有50个数据库,每次执行一次查询大约需要一个小时。有人可以给我提供一种工具或方式,让我一次选择所有数据库并简单地执行该查询吗?
答案 0 :(得分:0)
如果我猜您所有数据库的结构都相同,并且每次您运行脚本来更新某些内容时,该脚本基本上都是相同的,那么您只需为每个客户一个一个地运行相同的脚本即可。
如果上述情况成立,则可以使用CURSOR在所有数据库之间产生一个循环,并执行必要的脚本来满足您的目的。
注意:这不是解决方案,Just Idea。
--The first step will be creating a Table variable
--where you will INSERT all your database names
--for a further loop as below-
DECLARE @DbName VARCHAR(200)
DECLARE @DatabaseList TABLE (DbName VARCHAR(200))
INSERT INTO @DatabaseList (DbName) VALUES('db_name_1')
INSERT INTO @DatabaseList (DbName) VALUES('db_name_2')
--.......................
INSERT INTO @DatabaseList (DbName) VALUES('db_name_50')
--Now you can use CURSOR to generate the loop
--and execute your required script as shown below
DECLARE db_cursor CURSOR FOR
SELECT DbName FROM @DatabaseList
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @DbName
WHILE @@FETCH_STATUS = 0
BEGIN
--HERE You need to write your script That you
--Execute for all your database. I have added
--a sample script where I guess you updating
--certain tables in your all database WHERE ID = 1
-- You can see the Database Name inserted in the
-- Script Dynamically from the Loop
EXEC ('UPDATE '+@DbName+'.dbo.<Your_table_Name_Here>
WHERE ID=1')
--END OF Dynamic Part
FETCH NEXT FROM db_cursor INTO @DbName
END
CLOSE db_cursor
DEALLOCATE db_cursor