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

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

在可更新订阅中,在订阅设置更新方法,将 “排队更新” 设置为 “立即更新”

接着在订阅数据库更新表数据,出错:

消息 21079,级别 16,状态 1,过程 sp_getpublisherlink,第 52 行

没有发布服务器的 RPC 安全信息,或该信息无效。请用 sp_link_publication 指定该信息。

消息 20512,级别 16,状态 1,过程 sp_MSreplraiserror,第 8 行

可更新的订阅: 正在回滚事务。

消息 3609,级别 16,状态 1,第 1 行

事务在触发器中结束。批处理已中止。

查看该存储过程 sp_getpublisherlink ,确认抛出错误的语句 raiserror(21079, 16, 1) 和raiserror(21079, 16, 3),其中主要为表 MSsubscription_properties
没有求分发代理程序的参数信息行。 (可以直接查表MSsubscription_properties 或执行存储过程 sp_helpsubscription_properties 查看有没有信息)

按提示,执行存储过程 sp_link_publication 添加相关信息:(参考sp_link_publication

--设置在连接到发布服务器时立即更新订阅的同步触发器所使用的配置和安全信息
sp_link_publication
  @publisher = 'publisher'
, @publisher_db = 'publisher_db'
, @publication = 'publication'
, @security_mode =  2 --2:使用现有的通过 sp_link_publication 创建的用户定义的链接服务器登录名

执行失败,错误信息如下:

链接服务器"publisher"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "该伙伴事务管理器已经禁止了它对远程/网络事务的支持。"。

消息 7391,级别 16,状态 2,第 1 行

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

没有启用分布式事务,启用就是了!嘿嘿!~以下在每台服务器都做相同操作:

1. 启用MSDTC相关服务器

控制面板 ——》管理工具——》服务:

Distributed Transaction Coordinator

Remote Procedure Call(RPC)

Security Accounts Manager

2.启用本地协调器

开始——》管理工具——》服务组件(或者运行:dcomcnfg.exe)

控制台根节点——》组件服务——》计算机——》我的电脑(右键属性)

点击“MSDTC”选项,确认勾选“使用本地协调器”

控制台根节点——》组件服务——》计算机——》我的电脑

(继续点击)Distributed Transaction Coordinator——》本地DTC(右键属性)

3. MSDTC使用135端口

确认开启135端口或关闭防火墙或用services.msc打开服务启动TCP/IP
NetBIOS Helper服务

重启服务Distributed Transaction Coordinator并把“延迟启动”改为“自动”

此时在执行,完成后即可使用分布式事务,在订阅服务器可同步提交到发布服务器。

--设置在连接到发布服务器时立即更新订阅的同步触发器所使用的配置和安全信息
sp_link_publication
  @publisher = 'publisher'
, @publisher_db = 'publisher_db'
, @publication = 'publication'
, @security_mode =  2 --2:使用现有的通过 sp_link_publication 创建的用户定义的链接服务器登录名

更多参考:

sp_link_publication (Transact-SQL)

管理分布式事务

原文地址:https://www.cnblogs.com/lonelyxmas/p/8360762.html

时间: 2024-10-05 15:11:50

SqlServer & Windows 可更新订阅立即更新启用分布式事务协调器(MSDTC)的相关文章

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

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

SQLSERVER分布式事务使用实例

尊重原著作:本文参考自http://www.jb51.net/article/43540.htm --BEGIN DISTRIBUTED TRANSACTION [transactionname]--标志一个由分布式事务处理协调器MSDTC管理的TSQL分布式事务开始--SERVER A服务器为主控服务器.当连接发出后续COMMIT TRANSACTION或--ROLLBACK TRANSACTION语句时,主控服务器请求MSDTC在所涉及的服务器间管理--分布式事务的完成 --SQLSERVE

SqlServer 使用脚本创建分发服务及事务复制的可更新订阅

[创建使用本地分发服务器] /************************[使用本地分发服务器配置发布]***********************/ -- SqlServer 2008 R2 -- https://technet.microsoft.com/zh-cn/library/ms151860(v=sql.105).aspx use master go -- 服务器上是否已安装分发服务器 -- https://msdn.microsoft.com/zh-cn/library/ms

SqlServer 可更新订阅升级字段队列数据丢失原因

原文:SqlServer 可更新订阅升级字段队列数据丢失原因 之前简单描述过数据冲突发生的原因:SQLServer可更新订阅数据冲突的一个原因 ,但具体内部原理是怎么丢失的还不清楚,今天补充说明.可更新订阅,在订阅数据库操作数据,数据实时同步到发布数据库中. 经测试,有3种情况会导致订阅队列的数据丢失: 1.更改字段类型 2.增加删除字段 3.表对象发布 另:添加默认值约束,存储过程,函数正常!订阅队列数据不丢失!(触发器未设置同步) 具体模拟步骤如下: 1.在发布中添加表 2.停止队列读取器代

SQLServer 可更新订阅数据在线架构更改(增加字段)方案

之前一直查找冲突发布和订阅数据不一致的原因,后来发现多少数据库升级引起,因为一直以来都是在发布数据库增加字段,订阅也会自动同步.在此时如果订阅队列有数据,这些数据将丢失.参考上一篇说明:SQLServer 可更新订阅数据冲突的一个原因 .当在发布数据库增加一个字段时,系统同步存储过程和触发器都会重新生成,这会导致仍在队列中的数据无法正常同步.订阅队列中的命令将因"同步"后消失,代理有可能出错,但也会自动回复正常!~ 这周测试了一些方法,最终算是确定一个方案可行的,虽然麻烦和耗时. 首先

SqlServer 可更新订阅中在订阅库并发获取最大单据号测试及解决法案!

说明: 很多交易的系统都需要单据号,而单据号按顺序并发获取又是一件头疼的事!~ 一般单据号格式为:前缀+日期+编号(如:KK20150501000001) 现在模拟测试,数据库中的单据号作为一张表处理. 数据库单据号表(Billnumber)存储每个账号及其最大的单据号总共一条记录 单据号是组合而成的字符串,后6位为序号. 获取单据号的存储过程: EXEC [dbo].[GetBillnumber_Test]@Account='Account',@Billnumber NVARCHAR(20)O

SqlServer 可更新订阅队列读取器代理错误:试图进行的插入或更新已失败

原文:SqlServer 可更新订阅队列读取器代理错误:试图进行的插入或更新已失败 今天发现队列读取器代理不停地尝试启动但总是出错: 其中内容如下: 队列读取器代理在连接"PublicationServer"上的"pubDB"时遇到错误"试图进行的插入或更新已失败, 原因是目标视图或者目标视图所跨越的某一视图指定了 WITH CHECK OPTION, 而该操作的一个或多个结果行又不符合 CHECK OPTION 约束.". 请确保正确定义了分发

SQLServer 可更新订阅数据冲突的一个原因

可更新订阅为什么有冲突? 可更新订阅中,当升级增加一个字段时,通常在发布服务器的发布数据库中增加,对表增加字段后,发布自动同步到订阅数据库中(复制架构更改=true).但是,如果此时在订阅数据库进行DML操作,数据将不会同步到发布表中:这些差异数据在订阅表中如果一直未进行DML 操作,也就不会再次同步到发布中,存在差异. 复制配置环境: 可更新订阅事务复制 发布和订阅冲突都以订阅为准 使用排队更新 在订阅操作 冲突测试结果(以下为: 当数据存在不一致的情况下,对订阅再次操作会引起冲突,冲突策略会

Windows 8.1 Update 2更新了什么?

Windows 8.1的第二个更新将于8月12日(周二补丁日)发布,官方命名是“8月更新”(August Update).但是之前我们已经知道Windows 8.1 Update 2不可能重新提供开始菜单,那么它究竟为大家带来了什么更新? 据知情人士透露,微软对于这个“8月更新”并不是十分重视,它并非累积性更新,只是包含一些小的设计改变,并没有重大的新功能.也就是说,这次的系统更新会带来界面上的改善,但也都是些细节处的变化. 微软原本的计划并非如此,Windows团队最初希望将它打造为另一个如同