SQL200同一实例中批量更新不同数据库中相同表

[复制链接]
查看11 | 回复4 | 2011-1-25 11:23:20 | 显示全部楼层 |阅读模式
我公司服务器上有不同数据库(在同一实例上)供不同门店使用,在实际操作中遇到如下问题:每一个数据库的结构和表格都完全相同,有时需要批量更新各数据库中的同一张表的内容,如何操作。
例如:
有数据库depart01,depart02,depart03等,其中每个数据库中都有SPML这个表,其中SPML中有BH,PM等字段。有时需要批量更新PM,单个更新时我可以这样写:
USE depart01
UPDATE SPML SET PM='相应名称' WHERE BH='相应名称'
但如果我要同时把这些数据库中的某个BH对应的PM,我该如何修改呢!
请各位高手给个解答,在此先谢过!
谢谢四楼的答案,此方法可行,太感谢了,现在还有一个问题就是:
我要在spml中PM字段中加一个符号,那语句该怎么改呢,我平时针对特定数据库是这样写的:
USE depart01
UPDATE SPML SET PM=REPLACE(PM, PM, '$' + PM) WHERE BH IN ('A0000-10','B0000-10','C0000-10')AND PM NOT LIKE '%$%'
请问四楼的大侠,批量更新数据库时,这个语句该如何写呢?感激不尽!

回复

使用道具 举报

千问 | 2011-1-25 11:23:20 | 显示全部楼层
UPDATE depart01..UPDATE SPML SET PM='相应名称' WHERE BH='相应名称'GoUPDATE depart02..UPDATE SPML SET PM='相应名称' WHERE BH='相应名称'GoUPDATE depart03..UPDATE SPML SET PM='相应名称' WHERE BH='相应名称'你是不是想表达这个意思?
回复

使用道具 举报

千问 | 2011-1-25 11:23:20 | 显示全部楼层
可以用游标解决:declare @dbname nvarchar(20)declare curdb cursor forselect name from master..sysdatabases where name like 'depart%' --找出所有要更新的数据库open curdbfetch next from curdb
回复

使用道具 举报

千问 | 2011-1-25 11:23:20 | 显示全部楼层
你直接改connectionstring就行了。。比如Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=data;Data Source=hongtoo'Provider=Sybase.ASEOLEDBProvider.2
回复

使用道具 举报

千问 | 2011-1-25 11:23:20 | 显示全部楼层
如果是一个数据库中有好许多张表都含有一个字段,需要同时更新,我能实现,但同时更新好几个数据库,有点困难。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行