您的位置:首页 > 数据库

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

2010-08-20 16:55 281 查看
朋友你有没有遇到这种情况:

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

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 和链接服务器是一样的效果。快试试吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: