MSDASQL" 无法启动分布式事务

99_mei 2010-06-10 11:41:08
在SQL SERVER建立MYsql的链接服务器,直接insert into openquery,就没问题。
但加上BEGIN TRANSACTION就会报以下错误:
如下:
BEGIN TRANSACTION
insert into openquery(。。。。。。。)
commit


链接服务器"mysqllink"的 OLE DB 访问接口 "MSDASQL" 返回了消息 "[MySQL][ODBC 5.1 Driver]Optional feature not supported"。
消息 7391,级别 16,状态 2,第 2 行
无法执行该操作,因为链接服务器 "mysqllink" 的 OLE DB 访问接口 "MSDASQL" 无法启动分布式事务。
...全文
947 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
99_mei 2010-06-10
  • 打赏
  • 举报
回复
安装过程完整,没有什么问题的。
Andy__Huang 2010-06-10
  • 打赏
  • 举报
回复
会不会是你的数据库安装不完整?或缺少补丁没有打
99_mei 2010-06-10
  • 打赏
  • 举报
回复
链接服务器"mysqllink"的 OLE DB 访问接口 "MSDASQL" 返回了消息 "[MySQL][ODBC 5.1 Driver]Optional feature not supported"。
消息 7391,级别 16,状态 2,第 2 行
无法执行该操作,因为链接服务器 "mysqllink" 的 OLE DB 访问接口 "MSDASQL" 无法启动分布式事务。


是不是MYSQL不支持呢?
99_mei 2010-06-10
  • 打赏
  • 举报
回复
试过,没用,因为sql server与sql server之间是可以的,就是sql server 与mysql之间不行
永生天地 2010-06-10
  • 打赏
  • 举报
回复
启动MSDTC服务。


MSDTC简介:MSDTC是Microsoft Distributed Transaction Coordinator的简称,即微软分布式事务协调器,描述:协调跨多个数据库、消息队列、文件系统等资源管理器的事务。如果停止次服务,则不会发生这些事务。如果禁用此服务,显式依赖此服务的其他服务将无法启动。

MSDTC启动方法:

①“开始”“运行”,输入“services.msc”,或者“控制面板”“管理工具”“服务”,打开“服务”窗口,在名称中找到“Distributed Transaction Coordinator”,将其启动。

②“开始”“所有程序”“Microsoft SQL Server”“服务管理器”,打开“SQL Server 服务管理器”窗口,选中“Distributed Transaction Coordinator”服务,将其启动。



2. 设置MSDTC组件。
① 检查操作系统是否安装DTC组件。XP默认安装,Win2003默认不安装。安装步骤如下:

a. “开始”“控制面板”“添加删除程序”“添加删除Windows组件”,选择“应用程序服务器”,单击“详细信息”,选择“启用网络DTC访问”,单击“确定”“下一步”“完成”。

b. 停止并重启MSDTC服务(命令:net stop msdtc和net start msdtc)。

c. 停止参与分布式事务的任何资源管理器服务(如 Microsoft SQL Server 或 Microsoft Message Queue Server),然后重新予以启动。



② “开始”“运行”,输入“dcomcnfg”,或者“控制面板”“管理工具”“组件服务”,打开“组件服务”窗口,“组件服务”“计算机”“我的电脑”,右键“属性”“MSDTC”,勾选“使用本地协调器”,单击“安全性配置”,弹出“安全配置”窗口,勾选“网络DTC访问”、“允许远程客户端”、“允许远程管理”、“允许入站”、“允许出站”、“不要求进行验证”、“启用事务Inernet协议(TIP)事务”和“启用XA事务”(“允许入站”和“允许出站”据具体情况设置,客户端机器必须“允许出站”,服务器端机器必须“允许入站”),DTC登陆账号必须是“NT AUTHORITYNetworkService”。Vista系统只需勾选“使用本地协调器”即可。



③ 配置防火墙以允许与 Msdtc.exe服务的网络通讯。【测试时可以退掉所有的防火墙和杀毒软件】



3. 检查两台机器能够相互ping通Hostname。
注意是机器名,而不是IP。若不可以,进行如下设置:

① 在目录“%windir%system32driversetc”下的hosts文件,写上IP和HostName的对应信息,如 “10.25.11.185 GSMAJK”。另外,你也可以使用DTCping工具来测试是否可以在两台机器之间使用MSDTC,并帮你分析原因,下载地址可以到微软的站点。
playwarcraft 2010-06-10
  • 打赏
  • 举报
回复
試試。。
开始--运行--dcomcnfg.exe
元件服务--电脑--我的电脑(右键--属性)
MSDTC --安全性设定 --然后把“网络DTC存取”勾上,把“允许远端用户端”勾上,“允许远端系统管理”勾上, 在交易管理通讯里,“允许输入”勾上,“允许输出”勾上,“不需要验证”勾上
确定后,应该是会自动启动MSDTC service (Distributed Transaction Coordinator)
重启机器.
csw200201 2010-06-10
  • 打赏
  • 举报
回复
MySQL OLE DB driver does not support MSDTC because it doesn’t support auto-enlistment in the ambient COM+ transaction. If you really want to, you can write your own XA.DLL to wrap MySQL OLEDB driver in an XA transaction.

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧