设为首页 加入收藏

TOP

分布式事务笔记
2014-11-24 01:24:21 来源: 作者: 【 】 浏览:4
Tags:分布式 事务 笔记
分布式事务笔记
 1 SQLSERVER分布式事务的使用
 2 
 3 --BEGIN DISTRIBUTED TRANSACTION [transactionname]
 4 --标志一个由分布式事务处理协调器MSDTC管理的TSQL分布式事务开始
 5 --SERVER A服务器为主控服务器。当连接发出后续COMMIT TRANSACTION或
 6 --ROLLBACK TRANSACTION语句时,主控服务器请求MSDTC在所涉及的服务器间管理
 7 --分布式事务的完成
 8 
 9 --SQLSERVER使用链接服务器或者远程服务器作为分布式事务处理的平台,提供
10 --远程存储过程调用和分布式查询
11 
12 
13 --当使用分布式事务进行一个远程存储过程调用和一个分布式查询时,在SERVER A
14 --上发出BEGIN DISTRIBUTED TRANSACTION ,该连接调用SERVER B上的存储过程
15 --和SERVER C上的另一个存储过程,并且SERVER C上的存储过程对SERVER D执行一个
16 --分布式查询,则四个SQLSERVER服务器进入分布式事务中,SERVER A是该事务的创建者
17 --和控制服务器
18 
19 --创建分布式事务,在本地和远程数据库同时删除一条记录,其中,远程SQLSERVER
20 --的实例名称为RemoteServer。本地和远程数据库同时提交或同时回滚该事务。
21 --注意,执行分布式查询或调用存储过程时,使用4部分名称限定规则
22 
23 --前提:本机的MSDTC和远程机器的MSDTC服务要打开
24 --本机和远程机器能互相ping通
25 --数据库端口能互相telnet通
26 --创建一个链接服务器到远程机器WIN7U-20130414Z 
27 USE [GPOSDB]
28 GO
29 SELECT * FROM [SystemPara] WHERE [Name]='HDTPort'
30 SELECT * FROM [WIN7U-20130414Z].[GPOSDB].dbo.[SystemPara] WHERE [Name]='HDTPort'
31 
32 
33 
34 USE [GPOSDB]
35 GO
36 BEGIN DISTRIBUTED TRANSACTION
37 --从本地数据库删除一条记录
38 DELETE FROM [JOE].[GPOSDB].[DBO].[SystemPara]
39 WHERE [Name]='HDTPort'
40 
41 --从远程数据库中删除一条记录
42 DELETE FROM [GPOSDB].[dbo].[SystemPara]
43 WHERE [Name]='HDTPort'
44 
45 COMMIT TRAN
46 GO
47 
48 
49 
50 
51 --个人尝试了下是由于在双向的sql server访问中采用了链式方式访问(LinkedServer方式),
52 --遇到这种情况只需要将原来访问对方数据库的语句:
53 --select  *  from  linkedServerA.dbo.table1
54 --修改为:
55 --select  *  from  dbo.table1即可。
56 --标记下,以便以后解决。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇一些比较难的sql问题:8 下一篇关于SQL 2005

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: