SQLSERVER分布式事务使用实例
实例一
尊重原著作:本文参考自http://www.jb51.net/article/43540.htm
--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通
--创建一个链接服务器到远程机器ITSV
if exists(select * from sys.servers where name='DBSever\MSSQL2008')
EXEC sp_dropserver 'DBSever\MSSQL2008', 'droplogins'
EXEC sp_addserver 'DBSever\MSSQL2008'
EXEC sp_addlinkedsrvlogin 'DBSever\MSSQL2008', 'false',null, 'sa', '123321'
EXEC sp_serveroption 'DBSever\MSSQL2008', 'data access', 'on' --未将服务器 'DBSever\MSSQL2008' 配置为用于 DATA ACCESS。添加此句。
SET xact_abort on --对于大多数 OLE DB 提供程序(包括 SQL Server),必须将隐式或显示事务中的数据修改语句中的 XACT_ABORT 设置为 ON。唯一不需要该选项的情况是在提供程序支持嵌套事务时。
USE [SVTCCData]
GO
SELECT * FROM [VJ17A69HHC4ZMAS\MSSQLSERVER1].[SVTCCData].[dbo].[2014TestRemote] WHERE [Name]='lt3'
SELECT * FROM [DBSever\MSSQL2008].[SCJZData].[dbo].[2014TestRemote] WHERE [Name]='lt3'
USE [SVTCCData]
GO
BEGIN DISTRIBUTED TRANSACTION
--从本地数据库删除一条记录
DELETE FROM [VJ17A69HHC4ZMAS\MSSQLSERVER1].[SVTCCData].[DBO].[2014TestRemote]
WHERE [Name]='lt3'
--从远程数据库中删除一条记录
DELETE FROM [DBSever\MSSQL2008].[SCJZData].[dbo].[2014TestRemote]
WHERE [Name]='lt3'
COMMIT TRAN
GO
--个人尝试了下是由于在双向的sql server访问中采用了链式方式访问(LinkedServer方式),
--遇到这种情况只需要将原来访问对方数据库的语句:
--select * from linkedServerA.dbo.table1
--修改为:
--select * from dbo.table1即可。
实例二
/*
主控机:Win XP,SQL Server 2008 R2
资源机:Win Server 2008 R2,SQL Server 2008 R2
表结构:无Identity列
调用方式:SQL语句
测试回滚:测试
*/
If Exists(select * from sys.servers where name='ITSV')
EXEC sp_dropserver 'ITSV', 'droplogins'
EXEC sp_addlinkedserver 'ITSV', '', 'SQLOLEDB', 'DBSever\MSSQL2008'
EXEC sp_addlinkedsrvlogin 'ITSV', 'false',null, 'sa', '123321'
SET xact_abort on
BEGIN DISTRIBUTED TRANSACTION
Insert Into [2014TestRemote](ID,name,phone)Values(101,'101','101')
Delete ITSV.SCJZData.dbo.[2014TestRemote]
Insert Into ITSV.SCJZData.dbo.[2014TestRemote]
Select * From [2014TestRemote]
Update ITSV.SCJZData.dbo.[2014TestRemote] Set ID='Test2'
COMMIT TRAN
GO
EXEC sp_dropserver 'ITSV', 'droplogins'
SQLSERVER分布式事务使用实例的更多相关文章
- springcloud分布式事务Atomikos实例
0.JTA(Java Transaction Manager)的介绍 (1)jta与jdbc 简单的说 jta是多库的事务 jdbc是单库的事务 (2)XA与JTA XA : XA是一个规范或是一个事 ...
- sqlserver分布式事务
启动服务中的Distributed Transaction Coodinator后 创建链接服务器ender-pc\subx 设定连接服务器RPC OUT 以及RPC属性为True 实验一下代码 创建 ...
- 消息服务框架(MSF)应用实例之分布式事务三阶段提交协议的实现
一,分布式事务简介 在当前互联网,大数据和人工智能的热潮中,传统企业也受到这一潮流的冲击,纷纷响应国家“互联网+”的战略号召,企业开始将越来越多的应用从公司内网迁移到云端和移动端,或者将之前孤立的IT ...
- 即时消息服务框架(iMSF)应用实例之分布式事务三阶段提交协议的实现
一,分布式事务简介 在当前互联网,大数据和人工智能的热潮中,传统企业也受到这一潮流的冲击,纷纷响应国家“互联网+”的战略号召,企业开始将越来越多的应用从公司内网迁移到云端和移动端,或者将之前孤立的IT ...
- SQLServer之创建分布式事务
分布式事务创建注意事项 指定一个由 Transact-SQL 分布式事务处理协调器 (MS DTC) 管理的 Microsoft 分布式事务的起点. 执行 BEGIN DISTRIBUTED TRAN ...
- sqlserver Distributed Transaction 分布式事务
在webapi+ef+sqlserver开发项目时,利用transcope实现应用层级的事务时,偶尔会报分布式事务错误,而且很而复现,特别蛋疼.现将自己的解决方法初步整理下. 分析原因:搭建repos ...
- SqlServer & Windows 可更新订阅立即更新启用分布式事务协调器(MSDTC)
原文:SqlServer & Windows 可更新订阅立即更新启用分布式事务协调器(MSDTC) 在可更新订阅中,在订阅设置更新方法,将 "排队更新" 设置为 " ...
- JAVA分布式事务原理及应用(转)
JTA(Java Transaction API)允许应用程序执行分布式事务处理--在两个或多个网络计算机资源上访问并且更新数据. JDBC驱动程序的JTA支持极大地增强了数据访问能力. 本文的目 ...
- ADO.NET中的TransactionScope何时需要启用MSTDC(分布式事务管理)
我们知道在ADO.NET中可以用TransactionScope来将多个SqlConnection(多个数据库连接)执行的Sql语句放入一个事物中提交或取消,但是使用TransactionScope的 ...
随机推荐
- java 获取特定天数的时间戳
public Timestamp strToDate(int type){ Timestamp time = null; DateFormat format2= new SimpleDateForma ...
- MySQL --概述--
Mysql是最流行的关系型数据库管理,在Web应用方面MySQL是最好的RDBMS:关系数据库管理系统 什么是数据库? 数据库(Database)是按照数据结构来组织,存储和管理数据的仓库. 每个数据 ...
- iOS开展UI一片—简单的浏览器观看节目
iOS开发UI篇-简单的浏览器查看程序 一.程序实现要求 1.要求 2. 界面分析 (1) 须要读取或改动属性的控件须要设置属性 序号标签 图片 图片描写叙述 左边button 右边button (2 ...
- 调用Response.Redirect 捕获异常 解决办法(摘抄)
如果使用 Response.End.Response.Redirect 或 Server.Transfer 方法,将出现 ThreadAbortException 异常.您可以使用 try-catch ...
- 引用枚举进行对比时 enum需强制转换
枚举类 public enum MailRead { /// <summary> /// 未读 /// </summary> UNREAD=0, /// <summary ...
- 用CSS做圆角矩形
第一种方法:如果是CSS2.2的话,可以简单写一个制作圆角矩形,分上中下裁成三张图 <title>CSS3实现圆角</title> <style type="t ...
- dom处理配置文件_待完善
import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java ...
- 27 Remove Element
Given an array and a value, remove all instances of that value in place and return the new length. T ...
- c++11: <thread>学习
<thread>头文件中包含thread类与this_thread命名空间,下面逐一介绍. thread类 1. 构造函数 (1)默认构造函数 thread() noexcept; 默认构 ...
- 转 jquery插件--241个jquery插件—jquery插件大全
241个jquery插件—jquery插件大全 jquery插件jqueryautocompleteajaxjavascriptcoldfusion jQuery由美国人John Resig创建,至今 ...