如何同时执行两个不同服务器上的数据库

oknicholas 2006-10-25 09:23:06
现在的情况是
要进行两个不同数据库中的数据同时操作,这两个数据库放在不同服务器上,用户在应用程序中点一下操作, 一个数据库中的表的一个字段的值加1,而另一个数据库中的表的一个字段的值减1,问题是要两个要实现类似于事务的功能,一个服务器操作不成功,就要全部回滚操作,即另一个已经执行操作的服务器要恢复操作。 比如说,服务器1表中字段加1成功,而服务器2表中字段减1不成功,则要对服务器1对表的操作回滚。以此来实现两个服务器的数据兑换同步。
可是我想来想去也想不到一个好办法啊。
...全文
207 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
oknicholas 2006-10-30
  • 打赏
  • 举报
回复
晕 sp_addlinkedserver
服务器: 消息 15002,级别 16,状态 1,过程 sp_addlinkedserver,行 19
不能在事务内部执行过程 'sp_addlinkedserver'。
oknicholas 2006-10-30
  • 打赏
  • 举报
回复
哦,可以用 sp_addlinkedserver 这个方法,呵呵,谢谢各位啊
oknicholas 2006-10-30
  • 打赏
  • 举报
回复
谢谢各位帮助,lb_panda(斤八木子) 的 sp_addserver 只能在局域网中使用吧,如果是互联网的话,怎么使用啊
中国风 2006-10-27
  • 打赏
  • 举报
回复
select a.* FROM OPENROWSET('MSDASQL',
'DRIVER={SQL Server};SERVER=服务器IP/机器名;UID=sa;PWD=密码',
数据库名.dbo.表名) AS a inner join 另一个表
局域更新用这种方法连接
更新楼主自由发挥
lb_panda 2006-10-27
  • 打赏
  • 举报
回复
个人意见,不一定是楼主所要的:
首先,要确定数据库服务器A和数据库服务器B有同一个同名的数据库访问用户,比如是saAB,而且这个saAB用户在A和B里的权限最好是一样的。
假设A中要访问的数据库名为ADB,表名为ATb,字段名为ACol B中要访问的数据库名为BDB,表名为BTb,字段名为BCol现在我们在A中操作

begin tran
--首先在A中加入对B的引用
sp_addserver "B"

--然后进行你的更改操作
update ATb set ACol=ACol+1
update [B].[BDB].[dbo].[BTb] set BCol=BCol-1

--最后取消A中的B
sp_dropserver "B"

commit tran

如有问题,请指正!!
oknicholas 2006-10-27
  • 打赏
  • 举报
回复
但是两个 UPDATE的表,是在不同的服务器上的啊,怎么一起执行事务的啊,能不能写段代码让我明白下啊
pbsh 2006-10-26
  • 打赏
  • 举报
回复
链接服务器,把2个update语句写在一个存储过程里。或者写在1个DTS中。
marco08 2006-10-26
  • 打赏
  • 举报
回复
路過關注
oknicholas 2006-10-26
  • 打赏
  • 举报
回复
那还要考虑第一个执行成功,第二个执行失败,怎么才能对第一个进行数据回滚

而且远程数据库的操作不是直接调用数据库的,而是通过中间的Web Service来实现的
擒兽 2006-10-25
  • 打赏
  • 举报
回复
链接服务器,然后存储过程不就完了。
playwarcraft 2006-10-25
  • 打赏
  • 举报
回复
怎麼就像是銀行轉帳......

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧