SQLSERVER分布式事务使用实例

2022-05-24 0 887

复制代码 代码如下:

–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即可。
–标记下,以便以后解决。

免责声明:
1、本网站所有发布的源码、软件和资料均为收集各大资源网站整理而来;仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 不得使用于非法商业用途,不得违反国家法律。否则后果自负!

2、本站信息来自网络,版权争议与本站无关。一切关于该资源商业行为与www.niceym.com无关。
如果您喜欢该程序,请支持正版源码、软件,购买注册,得到更好的正版服务。
如有侵犯你版权的,请邮件与我们联系处理(邮箱:skknet@qq.com),本站将立即改正。

NICE源码网 MsSql SQLSERVER分布式事务使用实例 https://www.niceym.com/61798.html