两台SQL服务器同步事务处理。

朋友你有没有遇到这种情况:

在本地查询分析器中想获取远程数据库数据,

 

SELECT * INTO # FROM openrowset('sqloledb','IP';'sa';'','SELECT * FROM db..t')

 

只要你电脑能连接得上这服务器,这句肯定可以执行的。但你看下面这种情况:

 

BEGIN TRAN

 

SELECT * INTO # FROM openrowset('sqloledb','IP';'sa';'','SELECT * FROM db..t')

 

COMMIT TARN

 

会提示以下:

'

服务器: 消息 7391,级别 16,状态 1,行 2
该操作未能执行,因为 OLE DB 提供程序 'sqloledb' 无法启动分布式事务。
[OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中。 ]
OLE DB 错误跟踪[OLE/DB Provider 'sqloledb' ITransactionJoin::JoinTransaction returned 0x8004d00a]。

'

 

遇到这种情况怎么办?

 

第一步:“开始”->“程序”->“sql企业管理器”,找到本地服务器,右键->“属性”,“常规”选项页面中“自动启动MSDTC”一定要选上。

第二步:“开始”-“设置”-“控制面板”->“管理工具”->“组件服务”,在“组件服务”->“计算机”->“我的电脑”,右键属性

选择“MSDTC”页面,点击“安全性设置”,“允许远程客户端”,“允许远程管理”,“允许入站”,“允许出站”,“不要求进行验证”,这五项要选上。还有就是账户:必需是“NT AUTHORITY/NetworkService”。

OK,经上面设置了把SQL服务器重启。再把远程服务器电脑和上面一样设置即可。

 

我们再来试下刚才的SQL

 

BEGIN TRAN

 

SELECT * INTO # FROM openrowset('sqloledb','IP';'sa';'','SELECT * FROM db..t')

 

COMMIT TARN

 

怎么样,此时此刻你的脸上充满幸福的微笑了吧。对了,使用Openrowset 和链接服务器是一样的效果。快试试吧。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值