繁体   English   中英

如何在多个数据库中执行单个sql查询

[英]How to execute single sql query in multiple databases

我有云服务器,我为我的客户托管了一个 Web 应用程序。 每个客户在 IIS 中都有不同的 SQL 数据库和网站。 每当我想执行 sql 查询来更新某些内容时,我都必须在每个数据库中手动执行此操作。 有近50个数据库,每次执行单个查询大约需要一个小时。 有人可以为我提供一种工具或方式,让我一次选择所有数据库并简单地执行该查询吗?

如果我猜您所有的数据库都具有相同的结构,并且每次运行脚本来更新某些内容时,脚本基本相同,您只需为每个客户一个一个地运行相同的脚本。

如果上述情况属实,您可以使用 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 

暂无
暂无

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

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