如何配置分布式事务

在使用SQL Server时有时会用到分布式事务,下面是我总结的:如何配置分布式事务的详细步骤

1. 双方启动MSDTC服务

MSDTC服务提供分布式事务服务,如果要在数据库中使用 SQL Server分布式事务,必须在参与的双方服务器启动MSDTC(Distributed Transaction Coordinator)服务。

2. 打开双方135端口

MSDTC服务依赖于RPC(Remote Procedure Call (RPC))服务,RPC使用135端口,保证RPC服务启动,如果服务器有防火墙,保证135端口不被防火墙挡住。使用“telnet IP 135 ”命令测试对方端口是否对外开放。也可用端口扫描软件(比如Advanced Port Scanner)扫描端口以判断端口是否开放。

在双方防火墙中增加MSDTC.exe例外

可用命令行: netsh firewall set allowedprogram %windir%\system32\msdtc.exe MSDTC enable

3. 保证链接服务器中语句没有访问发起事务服务器的操作在发起事务的服务器执行链接服务器上的查询、视图或存储过程中含有访问发起事务服务器的操作,这样的操作叫做环回(loopback),是不被支持的,所以要保证在链接服务器中不存在此类操作。‘

4. 在事务开始前加入set xact_abort ON语句对于大多数 OLE DB 提供程序(包括 SQL Server),必须将隐式或显示事务中的数据修改语句中的 XACT_ABORT 设置为 ON。唯一不需要该选项的情况是在提供程序支持嵌套事务时。

5. MSDTC设置

打开“管理工具――组件服务”,以此打开“组件服务――计算机”,在“我的电脑”上点击右键。在MSDTC选项卡中,点击“安全配置”按钮。

在安全配置窗口中做如下设置:l 选中“网络DTC访问”l 在客户端管理中选中“允许远程客户端”“允许远程管理”l 在事务管理通讯中选“允许入站”“允许出站”“不要求进行验证”l 保证DTC登陆账户为:NT Authority\NetworkService

6. 链接服务器和名称解析问题建立链接SQL Server服务器,通常有两种情况:

第一种情况,产品选”SQL Server”EXEC sp_addlinkedserver @server=‘linkServerName‘, @srvproduct = N‘SQL Server‘ 这种情况,@server (linkServerName)就是要链接的sqlserver服务器名或者ip地址。

第二种情况,访问接口选“Microsoft OLE DB Provider SQL Server”或“Sql Native Client”EXEC sp_addlinkedserver @server=‘ linkServerName ‘, @srvproduct=‘‘, @provider=‘SQLNCLI‘, @datasrc=‘sqlServerName‘ 这种情况,@datasrc(sqlServerName)就是要链接的实际sqlserver服务器名或者ip地址。

时间: 2024-10-28 14:38:28

如何配置分布式事务的相关文章

JTA集成JOTM或Atomikos配置分布式事务(Tomcat应用服务器)

一.以下介绍Spring中直接集成JOTM提供JTA事务管理.将JOTM集成到Tomcat中. (经过测试JOTM在批量持久化时有BUG需要修改源码GenericPool类解决)! 参考文章http://mavin.zhou.blog.163.com/blog/static/114522435200971822334475/ 通过集成JOTM,直接在Spring中使用JTA事务 JOTM(Java Open Transaction Manager)是ObjectWeb的一个开源JTA实现,它本身

LCN分布式事务管理(一)

前言 好久没写东西了,9月份换了份工作,一上来就忙的要死.根本没时间学东西,好在新公司的新项目里面遇到了之前没遇到过的难题.那遇到难题就要想办法解决咯,一个请求,调用两个服务,同时操作更新两个数据库.这就带来事务不一致的问题了,分布式事务管理被强行拉出来了.导致原本两个springboot的单体项目,必须要协同管理起来.刚好微服务也接触过,小试牛刀咯. 框架介绍 LCN分布式事务框架其本身并不创建事务,而是基于对本地事务的协调从而达到事务一致性的效果 核心步骤 创建事务组是指在事务发起方开始执行

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

已禁用对分布式事务管理器(MSDTC)的网络访问.请使用组件服务管理工具启用 DTC 以便在 MSDTC 安全配置中进行网络访问. 此错误好像只有sql server2005才有,2008数据库以后版本就没有此错误了. 与基础事务管理器的通信失败. .net 代码里 写事务代码 如: using System.Transactions; using (TransactionScope ts = new TransactionScope()) { } ts.Complete(); DTC登陆账户为

【转】PostgreSQL分布式事务配置

XA是open group提出的分布式事务处理规范,JTA支持XA规范,JTA只规定了接口,有些应用容器提供实现,也有一些三方的开源实现可用,比如Atomikos. 如果PostgreSQL参与分布式事务(XA)处理,则需要在配置文件postgres.conf中设置max_prepared_transactions参数,此参数用于指定分布式事务中两步提交准备事务的最大数量.默认值为0,此时不支持分布式事务. max_prepared_transactions参数值不应该小于max_connect

java分布式事务

原文地址:http://blog.csdn.net/moonpure/article/details/52779794 在本系列先前的文章中,我们主要讲解了JDBC对本地事务的处理,本篇文章将讲到一个分布式事务的例子. 请通过以下方式下载github源代码: git clone https://github.com/davenkin/jta-atomikos-hibernate-activemq.git 本地事务和分布式事务的区别在于:本地事务只用于处理单一数据源事务(比如单个数据库),分布式事

本地事务和分布式事务工作实践 【转】

一:从事务的历史说起 知已知彼,百战不败.想了解事务,我们从事务的历史说起. 在Windows平台上,事务的概念最开始出现在关系型数据库中,但是随着.net平台的发展,事务包括的的范围也越来越宽,先一睹为快, 在关系型数据库中的事务是通过begin transaction,rollback transaction, commit 等关键字来实现事务的. BEGIN TRANSACTION  UPDATE [dbo].[T_ACCOUNT] SET BALANCE = BALANCE + @amo

javaweb分布式事务

分布式事务是指操作多个数据库之间的事务,spring的 org.springframework.transaction.jta.JtaTransactionManager,提供了分布式事务支持.如果使 用WAS的JTA支持,把它的属性改为WebSphere对应的TransactionManager.     在tomcat下,是没有分布式事务的,不过可以借助于第三方软件jotm(Java Open Transaction Manager )和AtomikosTransactionsEssenti

无法执行该操作,因为链接服务器 "xxxxx" 的 OLE DB 访问接口 "SQLNCLI" 无法启动分布式事务

在存储过程中使用事务,并且使用链接服务器时,报类似下面的错误 链接服务器"****"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "没有活动事务.".消息 7391,级别 16,状态 2,过程 proc_SyncDiliveryData,第 20 行无法执行该操作,因为链接服务器 "*****r" 的 OLE DB 访问接口 "SQLNCLI10" 无法启动分布式事务. 度娘了很久,找到了

spring+hibernate管理多个数据源(非分布式事务)

本文通过一个demo,介绍如何使用spring+hibernate管理多个数据源,注意,本文的事务管理并非之前博文介绍的分布式事务. 这个demo将使用两个事务管理器分别管理两个数据源.对于每一个独立的事务,只涉及一个数据源. demo功能:实现一个能依靠两个独立的事务管理器互不干涉的管理自己的数据源的web demo. demo将实现: 1.独立地控制两个不同的数据源的事务管理器. 测试方式:restful web api 使用工具: spring 4.1.1.RELEASE hibernat