我有一个表在SQL Server 2014和
MySQL上表示Table1.
Table1
ID INT,Code VARCHAR(100)
我使用“Microsoft OLEDB Provider for ODBC”在SQL Server中创建了一个链接服务器MyLinkedServer.
**链接服务器**
EXEC master.dbo.sp_addlinkedserver @server = N'MyLinkedServer', @srvproduct=N'MyLinkedServer', @provider=N'MSDASQL', @datasrc=N'MyLinkedServer'
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'MyLinkedServer',@useself=N'False',@locallogin=NULL,@rmtuser=N'username',@rmtpassword='########'
链接服务器设置
EXEC master.dbo.sp_serveroption @server=N'MyLinkedServer', @optname=N'data access', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'MyLinkedServer', @optname=N'use remote collation', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'MyLinkedServer', @optname=N'remote proc transaction promotion', @optvalue=N'true'
链接服务器已成功创建,我可以在SQL Server中查询Mysql表.
询问
当我跑
INSERT INTO MyLinkedServer...Table1(ID,Code) SELECT 1,'Code1'
记录已插入.但是,当我启动一个事务并运行INSERT时,我收到一个错误:
BEGIN TRAN
INSERT INTO MyLinkedServer...Table1(ID,Code) SELECT 1,'Code1'
COMMIT
错误:
OLE DB provider “MSDASQL” for linked server “MyLinkedServer” returned message “[MySQL][ODBC 5.3(a) Driver]Optional feature not supported”.
Msg 7391, Level 16, State 2, Line 8
The operation could not be performed because OLE DB provider “MSDASQL” for linked server “MyLinkedServer” was unable to begin a distributed transaction.
到目前为止我尝试了什么.
>在MSDTC中启用XA事务
>在链接服务器提供程序中启用以下设置
>嵌套查询
>仅限零级
>允许进程
>支持’喜欢’操作符
我检查了以下链接及其建议,但错误仍然存在:
编辑
额外细节:
> MySQL正在Ubuntu机器上使用InnoDB存储引擎.
>我已经配置了ODBC connector并使用它来配置链接服务器中使用的ODBC系统数据源