如何对SQL中的所有数据库执行脚本

我有300个数据库,每个数据库都要执行一条Update 的语句,有没有简单的办法,游标可以实现么?请高手具体回答下哦,谢谢了

第1个回答  2015-07-22

以sqlserver为例

首先创建一张表

create table database_info
(databasename varchar(50));

然后,将所有数据库名的信息录入到这张表中。这步可参考sqlserver中都有哪些数据库。

然后,执行存储过程:

declare @sql nvarchar(4000),@i int,@maxdatabase
select @maxdatabase=count(*) from database_info
set @i=1
while @i<=@maxdatabase
begin
set @sql='update '
select @sql=sql+datebase_name from database_info where id =@i
select @sql=sql+'.master.dbo.tbl1 set tbl1.aaa=tbl2.bbb from '
select @sql=sql+datebase_name from database_info where id =@i
eselect @sql=sql+'.master.dbo.tbl2 where tbl1.ccc=tbl2.ccc'
exec sp_executesql @sql
set @i=@i+1
end

注意事项:其中update语句,可根据自己的实际需要进行修改。

第2个回答  2009-10-18
找一个数据库
建立300个库的链接数据库

然后在你的新数据库里建一张表database_info,把你的库名字datebase_name都记下来,再加个id字段,顺序编号,然后用循环和动态脚本来做重复工作
declare @sql nvarchar(4000),@i int,@maxdatabase
select @maxdatabase=count(*) from database_info
set @i=1
while @i<=@maxdatabase
begin
set @sql='update '
select @sql=sql+datebase_name from database_info where id =@i
select @sql=sql+'.master.dbo.tbl1 set tbl1.aaa=tbl2.bbb from '
select @sql=sql+datebase_name from database_info where id =@i
eselect @sql=sql+'.master.dbo.tbl2 where tbl1.ccc=tbl2.ccc'
exec sp_executesql @sql
set @i=@i+1
end

按这个脚本写,超过300个库的时候,只要维护表database_info,往里面加行就可以了本回答被提问者和网友采纳
相似回答