当前位置: 移动技术网 > IT编程>数据库>MSSQL > SQLSERVER分布式事务使用实例

SQLSERVER分布式事务使用实例

2017年12月12日  | 移动技术网IT编程  | 我要评论

作为生物的社会,贺州学院图书馆,魔女幼熙下载

复制代码 代码如下:

--begin distributed transaction [transactionname]
--标志一个由分布式事务处理协调器msdtc管理的tsql分布式事务开始
--server a服务器为主控服务器。当连接发出后续commit transaction或
--rollback transaction语句时,主控服务器请求msdtc在所涉及的服务器间管理
--分布式事务的完成

--sqlserver使用链接服务器或者远程服务器作为分布式事务处理的平台,提供
--远程存储过程调用和分布式查询


--当使用分布式事务进行一个远程存储过程调用和一个分布式查询时,在server a
--上发出begin distributed transaction ,该连接调用server b上的存储过程
--和server c上的另一个存储过程,并且server c上的存储过程对server d执行一个
--分布式查询,则四个sqlserver服务器进入分布式事务中,server a是该事务的创建者
--和控制服务器

--创建分布式事务,在本地和远程数据库同时删除一条记录,其中,远程sqlserver
--的实例名称为remoteserver。本地和远程数据库同时提交或同时回滚该事务。
--注意,执行分布式查询或调用存储过程时,使用4部分名称限定规则

--前提:本机的msdtc和远程机器的msdtc服务要打开
--本机和远程机器能互相ping通
--数据库端口能互相telnet通
--创建一个链接服务器到远程机器win7u-20130414z
use [gposdb]
go
select * from [systempara] where [name]='hdtport'
select * from [win7u-20130414z].[gposdb].dbo.[systempara] where [name]='hdtport'

 

use [gposdb]
go
begin distributed transaction
--从本地数据库删除一条记录
delete from [joe].[gposdb].[dbo].[systempara]
where [name]='hdtport'

--从远程数据库中删除一条记录
delete from [gposdb].[dbo].[systempara]
where [name]='hdtport'

commit tran
go


--个人尝试了下是由于在双向的sql server访问中采用了链式方式访问(linkedserver方式),
--遇到这种情况只需要将原来访问对方数据库的语句:
--select  *  from  linkedservera.dbo.table1
--修改为:
--select  *  from  dbo.table1即可。
--标记下,以便以后解决。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网