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

来源:互联网 发布:python range小数 编辑:程序博客网 时间:2024/05/22 04:33

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

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

 

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 和链接服务器是一样的效果。快试试吧。

原创粉丝点击