SQL Server分布式事务配置(MSDTC)(远程数据库更新)
如果你也遇到了类似于
OLE DB "SQLNCLI" "未知" "分布"等错误时,请现尝试使用这个地址的方法进行处理,如果无效的话在继续后面的方法
http://blog.csdn.net/hb_gx/archive/2007/10/15/1826436.aspx
SQL Server数据库以下简称MSS
MSS服务器demo1 创建表
create table1(col1 varchar(20),col2 varchar(20) col3 varchar(20))
insert into ('1','','')
insert into ('1','','')
insert into ('2','','')
insert into ('2','','')
MSS服务器demo2 创建远程连接到demo1,并创建视图
create view table
as
select * from dblink_demo1.master.dbo.table1 where col1='1'
在查询分析器中
update table set col3 = col3; --ok,执行成功
begin trans T
update table set col3 = col3; --error,执行失败
commit trans T
这个问题产生的原因是,你的视图table用到了远程数据库上的表,造成你的事务T需要,成为一个分布式事务。所以你需要配置分布式事务环境,就如同文章开始的引用文章中所说得那样,配置msdtc
此时,需要声明分布式事务
begin DISTRIBUTED trans T
update table set col3 = col3; --error,执行还是失败
commit trans T
至此,我也很是苦恼,找了很多方法,服务器也进行了升级,最后还是没配通,于是乎就把代码改了
powerbuilder中,autocommit设置为true就可以了
如果是用ado连接的话,因为默认是自动提交,所以不用设置就可以
当然了这样设置也存在一个问题,就是事务无法回滚,还要自己进行后续的错误处理
通过以上方法尽管已经能够更新数据,但是因为无法进行事务的回滚,显然存在一定的风险
于是下午又进行了一些实验,发现是防火墙的问题,关闭之后就可以测通了。但是作为数据库服务起来说,不开通防火墙显然是风险更大,那么怎么设置,请看这篇文章
http://www.cnblogs.com/shcity/articles/1222964.html
在调用的时候,还需要执行一个设置语句,否则还是不行
EXECUTE IMMEDIATE "set xact_abort on"
begin transaction t
update table set col2 = col2;
commit transaction t
总结
1.配置msdtc
2.配置防火墙
3.检查视图,更新语句,尽量少关联表
4.增加"set xact_abort on"
常见错误
1.msdtc没有启动 net start msdtc
2.分布式事务无法启动 ,配置msdtc,保证选中“入站”“出战”“TIP 事务”
3.超时,设置msdtc,选项,事务超时为0或者大一些
4.无法启动分布式事务,防火墙问题,关闭防火墙
5.NULL事务,通常为视图,或者更新语句较复杂,造成loopback,尽量简化
SQL Server分布式事务配置(MSDTC)(远程数据库更新)相关推荐
- 解决SQL Server管理器无法连接远程数据库Error: 1326错误
解决SQL Server管理器无法连接远程数据库Error: 1326错误 我们在在使用SQL Server时都会遇到使用SQL Server Management Studio无法连接远程数据库实例 ...
- sql server分布式事务解决方案[新事务不能登记到指定的事务处理器中错误]
< DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd> 适用环境 操作系统:wi ...
- sql server分布式事务解决方案
适用环境<?xml:namespace prefix = o /> 操作系统:windows 2003 数据库:sql server 2000/sql server 2005 使用链接服务 ...
- SQL Server 分布式数据库的问题和解决方法
一.问题现象 假如分布式事务的客户端和服务器端(可能N个)不在同一台服务器上,如分别为应用程序服务器 和 数据库服务器,经常会出现一下错误: ① 在建立与服务器的连接时出错.在连接到 SQL Serv ...
- sql server分布式_如何安装,配置和使用SQL Server分布式重播
sql server分布式 介绍 (Introduction) The Microsoft SQL Server Distributed Replay feature has been provide ...
- 如何配置SQL server,让其允许远程外部连接
最关键原因:windows firewall开启的原因. 添加例外: Windows Vista 和 Windows Server 2008 以及更高版本 以下过程通过使用具有高级安全 Microso ...
- (转)SQL Server:在 SQL Server 2005 中配置数据库邮件,发送邮件
SQL Server:在 SQL Server 2005 中配置数据库邮件,发送邮件 [作/译者]:鹏城万里 [日期]:2008-07-24 [来源]:本站原创 [查看]: 2031 ...
- XenDesktop 5 SQL Server Mirror事务日志比较大的原因分析
在实施XenDesktop5项目过程中,发现XenDesktop5版本的数据库镜像事务日志很大,在XenDesktop4和XenApp版本中不存在该问题:于是我根据该现象探究XenDesktop5及以 ...
- SQL SERVER 2005镜像配置(包含见证服务器)
镜像简介 重要说明:保持数据库镜像运行.如果您关闭数据库镜像,则必须执行完全备份并还原数据库以重建数据库镜像. 一. 简介 SQL SERVER 2005镜像基于日志同步,可良好实现故障转移.每个数据 ...
- SQL Server 为什么事务日志自动增长会降低你的性能
原文地址:点击打开链接 在这篇文章里,我想详细谈下为什么你要避免事务日志(Transaction Log)上的自动增长操作(Auto Growth operations).很多运行的数据库服务器,对于 ...
最新文章
- 一个HTTP请求的曲折经历
- Android开发之自定义Spinner样式的效果实现(源代码实现)
- C# web api 中过滤器的使用
- VC基于MSCOMM控件串口通讯
- Storm 01_初识初知
- bzoj 2535: [Noi2010]Plane 航空管制2【拓扑排序+堆】
- 用于SaaS和NoSQL的Jdbi
- VFP下利用API调用帮助
- SpringCloud Hoxton版微服务-入门篇
- 关于FileSystemWatcher监听文件创建
- Spring Boot基础学习笔记15:实现文件下载功能
- MySQL Mathematical Functions(数学方法)
- VM12即VMware Workstation 12 序列号
- app测试和接口测试区别
- AutoCAD2010 激活不了,老是激活错误(0015.111)
- python字符串重复元素的删除_python删除列表重复元素
- ref获取元素 vue 删除子元素_vue 添加删除子元素
- P5514 [MtOI2019]永夜的报应
- 如何从Mixamo下载人物模型的动画
- pscs6怎么做html模板,怎么在Adobe Photoshop CS6里制作表格模板(PS)怎么画表格
热门文章
- 2021暗月web渗透测试攻防全栈红队视频教程网络安全程师培训全系列学习心得分享
- 视频教程-ArcGIS与CASS在地籍建库中的结合应用-大数据
- python安装pygame教程_pygame 安装教程
- 高等数学复盘 | 第七册下册第八章——向量代数与空间解析几何思维导图梳理(复习专用)
- 计算机无法安装dx11,Windows10系统DX11正确的安装路径是什么?
- OCR电子发票批量自动合成软件
- 网页扫雷html css js,GitHub - zsr204/Sweep: js + html + css 实现一个简单的扫雷~~ 附加 难度选择 计时 计雷数 开始 重新开始 功能...
- 迅雷极速版任务出错的解决办法(亲测可用)
- java excel批量导入数据库数据_java把excel数据批量导入到数据库
- numpy_multiply函数