请教 bcp能否实现 批量的update 和delete动作

itview 2003-05-19 10:55:23
请教 bcp能否实现 批量的update 和delete动作
比如,有两个数据库服务器server1和server2,且都具有相同结构的数据库
当server1中update或delete数据的时候,已文件的形式导出,
server2再以文件的形式,更新数据。
...全文
62 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
psxfghost 2003-05-19
update OPENDATASOURCE(
'SQLOLEDB',
'Data Source=Server1;User ID=MyUID;Password=MyPass'
).Northwind.dbo.Categories set 字段1=...
然后可以
delete OPENDATASOURCE(
'SQLOLEDB',
'Data Source=Server2;User ID=MyUID;Password=MyPass'
).Northwind.dbo.Categories

insert into OPENDATASOURCE(
'SQLOLEDB',
'Data Source=Server2;User ID=MyUID;Password=MyPass'
).Northwind.dbo.Categories
(select * from OPENDATASOURCE(
'SQLOLEDB',
'Data Source=Server1;User ID=MyUID;Password=MyPass'
).Northwind.dbo.Categories )
回复
pengdali 2003-05-19
使用联结服务器:
EXEC sp_addlinkedserver '别名','','MSDASQL',NULL,NULL,'DRIVER={SQL Server};SERVER=远程名;UID=用户;PWD=密码;'
exec sp_addlinkedsrvlogin @rmtsrvname='别名',@useself='false',@locallogin='sa',@rmtuser='sa',@rmtpassword='密码'
GO
然后你就可以如下:
select * from 别名.库名.dbo.表名
insert 库名.dbo.表名 select * from 别名.库名.dbo.表名
select * into 库名.dbo.新表名 from 别名.库名.dbo.表名
go
回复
happydreamer 2003-05-19
我原来试过在trigger里用bcp,想等数据插入完后,导出来
可惜失败,结果是最后连表也坏了,拒绝访问



你可以这样做
CREATE TRIGGER 名1 ON dbo.tabMain
FOR INSERT
AS
insert db2..tabSlave select * from inserted

CREATE TRIGGER 名2 ON dbo.tabMain
FOR update
AS
update db2..tabSlave set 列=aa.列 from inserted aa where aa.编号=db2..tabSlave.编号


CREATE TRIGGER 名3 ON dbo.tabMain
FOR delete
AS
delete db2..tabSlave where 编号 in (select 编号 from deleted)

  


回复
a1n1 2003-05-19
用触发器不行?
回复
redleaf 2003-05-19
为什么不用SQL SERVER的触发器和DTS的功能。。
如果用BCP的功能也可以实现。
回复
itview 2003-05-19
楼上能否解释一下 代码
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2003-05-19 10:55
社区公告
暂无公告