启动服务中的Distributed Transaction Coodinator后

创建链接服务器ender-pc\subx

设定连接服务器RPC OUT 以及RPC属性为True

实验一下代码

创建表

CREATE TABLE [dbo].[yuf](
[id] [uniqueidentifier] NOT NULL,
[namx] [nvarchar](50) NOT NULL,
) ON [PRIMARY]

第一种方法显示调用begin distributed transaction  

set XACT_ABORT on
begin distributed transaction distributedtran begin declare @rowcounts int =0; insert into dbo.yuf(id,namx) values(newid(),N'test1');
select * from dbo.yuf; set @rowcounts=@rowcounts+(select @@ROWCOUNT); insert into [ender-pc\subx].subt.dbo.yuf(id,namx) values(newid(),N'test1'+REPLICATE(N'1',50)); set @rowcounts=@rowcounts+(select @@ROWCOUNT); if @rowcounts=2 commit transaction distributedtran; else rollback transaction distributedtran; end go select * from dbo.yuf;

 

第二种方法跟调用本地事务一样

USE test
EXEC sp_configure 'remote proc trans', 1 ;
GO
RECONFIGURE ;
GO

 

1)调用存储过程方式

CREATE PROCEDURE xt
@l int
AS
BEGIN
set xact_abort on;
begin tran insert into dbo.yuf(id,namx) values(newid(),N'test1'); insert into [ender-pc\subx].subt.dbo.yuf(id,namx) values(newid(),N'test1'+REPLICATE(N'1',@l));
commit tran; END
GO

  

exec dbo.xt @l=55;--插入超长字符串,导致两个表数据回滚
GO
exec dbo.xt @l=20;--两表插入正常

2)直接脚本调用方式

set xact_abort on
begin tran declare @rowcounts int =0; insert into dbo.yuf(id,namx) values(newid(),N'test1');
select * from dbo.yuf; set @rowcounts=@rowcounts+(select @@ROWCOUNT); insert into [ender-pc\subx].subt.dbo.yuf(id,namx) values(newid(),N'test1'+REPLICATE(N'1',20)); set @rowcounts=@rowcounts+(select @@ROWCOUNT); commit transaction

  

sqlserver分布式事务的更多相关文章

  1. SQLSERVER分布式事务使用实例

    实例一 尊重原著作:本文参考自http://www.jb51.net/article/43540.htm --BEGIN DISTRIBUTED TRANSACTION [transactionnam ...

  2. sqlserver Distributed Transaction 分布式事务

    在webapi+ef+sqlserver开发项目时,利用transcope实现应用层级的事务时,偶尔会报分布式事务错误,而且很而复现,特别蛋疼.现将自己的解决方法初步整理下. 分析原因:搭建repos ...

  3. SqlServer & Windows 可更新订阅立即更新启用分布式事务协调器(MSDTC)

    原文:SqlServer & Windows 可更新订阅立即更新启用分布式事务协调器(MSDTC) 在可更新订阅中,在订阅设置更新方法,将 "排队更新" 设置为 " ...

  4. SQLServer之创建分布式事务

    分布式事务创建注意事项 指定一个由 Transact-SQL 分布式事务处理协调器 (MS DTC) 管理的 Microsoft 分布式事务的起点. 执行 BEGIN DISTRIBUTED TRAN ...

  5. 没有活动事务 链接服务器的 OLE DB 访问接口 "SQLNCLI" 无法启动分布式事务

    在windows2003下执行分布式事务的时候出现如下情况. 一. 问题现象在执行分布式事务时,在sql server 2005下收到如下错误: 链接服务器"xxxxxxx"的 O ...

  6. JAVA分布式事务原理及应用(转)

      JTA(Java Transaction API)允许应用程序执行分布式事务处理--在两个或多个网络计算机资源上访问并且更新数据. JDBC驱动程序的JTA支持极大地增强了数据访问能力. 本文的目 ...

  7. SQL SERVER 分布式事务(DTC)

    BEGIN DISTRIBUTED TRANSACTION指定一个由 Microsoft 分布式事务处理协调器 (MS DTC) 管理的 Transact-SQL 分布式事务的起始. 语法BEGIN ...

  8. 已禁用对分布式事务管理器(MSDTC)的网络访问。请使用组件服务管理工具启用 DTC 以便在 MSDTC 安全配置中进行网络访问。

    今天写ASP.NET程序,在网页后台的c#代码里写了个事务,事务内部对一张表进行批量插入,对另外一张表进行查询与批量插入. 结果第二张表查询后foreach迭代操作时报错:已禁用对分布式事务管理器(M ...

  9. ADO.NET中的TransactionScope何时需要启用MSTDC(分布式事务管理)

    我们知道在ADO.NET中可以用TransactionScope来将多个SqlConnection(多个数据库连接)执行的Sql语句放入一个事物中提交或取消,但是使用TransactionScope的 ...

随机推荐

  1. OEL7.6源码安装MYSQL5.7

    首先官网下载安装包https://dev.mysql.com/downloads/mysql/5.7.html#downloads 然后上传解压至/usr/local目录 [root@localhos ...

  2. day 67 作业

    有红, 黄, 蓝三个按钮, 以及一个200X200px的矩形box, 点击不同的按钮, box的颜色会被切换为指定的颜色 <!DOCTYPE html> <html lang=&qu ...

  3. Java数据类型(2)------自动封装拆箱

    目的: 自动装箱和拆箱从Java 1.5开始引入,目的是将原始类型值转自动地转换成对应的对象,以使用对象的API和引用类型操作.自动装箱与拆箱的机制可以让我们在Java的变量赋值或者是方法调用等情况下 ...

  4. Leetcode79 Word Search

    题目描述 Given a 2D board and a word, find if the word exists in the grid. The word can be constructed f ...

  5. 怎么认Destsoon标签条件

    看准一个标签认条件 如: <!--{php $tags=tag("moduleid=18&table=club_group_18&condition=status=3 ...

  6. oracle在windows(含客户端工具pl/sql安装)下安装

    安装Oracle服务器端 系统默认创建的数据库名称为orcl,可自行修改. 全局数据库名(用来唯一标示Oracle数据库,每个数据库至少由一个Oracle系统标识符(SID)引用),orcl,后面称为 ...

  7. freeradius编译安装+mysql配置

    参考文档: freeradius 官网的wikihttp://wiki.freeradius.org/Home ubuntu freeradius搭建教程 http://yustanto.com/fr ...

  8. Spring Cloud微服务安全实战_3-1_API安全 常见的安全机制

    本章讲解,在不考虑微服务,只考虑一个简单的API ,如何保证这个API的安全? 三个问题: 1,什么是API ? 2,API安全的要素有哪些? 3,API安全基本机制 一.什么是API 百度百科:AP ...

  9. opengl第一个工程

    #include <iostream> #include <glad/glad.h> #include <GLFW/glfw3.h> void framebuffe ...

  10. nginx虚拟机配置

    #虚拟主机的配置server {#监听端口listen 80;#服务器域名server_name localhost;#网页的默认编码#charset koi8r;#访问该虚拟主机的日志位置#acce ...