Mysql不能用openrowset,sqlserver触发器往mysql插入数据异常有关问题

sqlserver触发器往mysql插入数据错误问题

我在sqlserver查询分析器中输入语句   能够成功执行

insert into OPENROWSET(   'MSDASQL',   'DRIVER={MySQL ODBC 5.1 Driver};   SERVER=localhost;   PORT=3306;DATABASE=wpf;   USER=root;PASSWORD=w001;   STMT=set names gb2312;   OPTION=2049','select * from tAbc;'   )  select 0,'admin','admin','0','test1','2013-08-05 15:00:26','1','0','0','','','','0','0'

但是我封装成sqlserver的触发器     提示错误

alter trigger mysqlTest_1 on [t_1mysql]

for insert,update

as

declare @var1 varchar(max),@var2 varchar(max),@txt nvarchar(max)

select @var1=F1 from inserted

set @txt=

'insert into OPENROWSET(

''MSDASQL'',

''DRIVER={MySQL ODBC 5.1 Driver};

SERVER=localhost;

PORT=3306;DATABASE=wpf;

USER=root;PASSWORD=w001;

STMT=set names gb2312;

OPTION=2049'',''select * from tAbc;''

)

select 0,''admin'',''admin'',''0'','''+isnull(@var1,'')+''',''2013-08-05 15:00:26'',''1'',''0'',''0'','''','''','''',''0'',''0'''

exec  sp_executesql @txt

当执行语句

insert into t_1mysql

values('test1','abc')

错误信息为:

链接服务器"(null)"的 OLE DB 访问接口 "MSDASQL" 返回了消息 "[MySQL][ODBC 5.1 Driver]Optional feature not supported"。

消息 7391,级别 16,状态 2,第 1 行

无法执行该操作,因为链接服务器 "(null)" 的 OLE DB 访问接口 "MSDASQL" 无法启动分布式事务。

请问是什么问题?

分享到:

------解决方案--------------------

引用:Quote: 引用:#1.由于命令A和它所触发的触发器T中的代码是同一个事务,要么都成功,要么都失败。但是你用到了链接服务器,所以就要启动分布式事务,才可以正常执行。

#2.即使启用分布式事务,也是应用在SQLSERVER和SQLSERVER之间。异构数据库之间,应该是不行的。

所以,楼主就不要这样用了。

建议:触发器中的数据,先INSERT到本地的另外一张表中,再写个JOB,监控此表,把数据同步到MYSQL数据表。

弱弱得问一下JOB是什么?

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值