我的MSSQL触发器:
ALTER TRIGGER [dbo].[ioTrigger_dbo_vsolv_mst_tproddtchng]
ON [dbo].[vsolv_mst_tproddtchng]
for INSERT
AS
BEGIN
SET NOCOUNT ON;
INSERT OPENQUERY (LINKED,'SELECT proddtchng_product_gid,
proddtchng_mrp,
proddtchng_tndpwtax,
proddtchng_tndpwotax,
proddtchng_kldpwtax,
proddtchng_kldpwotax,
proddtchng_costprice,
proddtchng_website,
proddtchng_purpose,
proddtchng_weight,
proddtchng_suitable,
proddtchng_workingrange,
proddtchng_cutoff,
proddtchng_timedelay,
proddtchng_description,
proddtchng_validfrom,
proddtchng_validto,
proddtchng_createby,
proddtchng_createdate,
proddtchng_isactive,
proddtchng_isremoved
from vsolv_line_tn.vsolv_mst_tproddtchng')
SELECT
proddtchng_product_gid,
proddtchng_mrp,
proddtchng_tndpwtax,
proddtchng_tndpwotax,
proddtchng_kldpwtax,
proddtchng_kldpwotax,
proddtchng_costprice,
proddtchng_website,
proddtchng_purpose,
proddtchng_weight,
proddtchng_suitable,
proddtchng_workingrange,
proddtchng_cutoff,
proddtchng_timedelay,
proddtchng_description,
proddtchng_validfrom,
proddtchng_validto,
proddtchng_createby,
proddtchng_createdate,
proddtchng_isactive,
proddtchng_isremoved
FROM
inserted;
END
执行上述触发器时,出现以下错误:
链接服务器“ LINKED”的OLE DB访问接口“ MSDASQL”返回消息“ [MySQL] [ODBC 5.3(a)驱动程序]不支持可选功能”。 消息7391,级别16,状态2,过程ioTrigger_dbo_vsolv_mst_tproddtchng,第8行 无法执行此操作,因为链接服务器“ LINKED”的OLE DB提供程序“ MSDASQL”无法开始分布式事务。
我已经从Sqlserver2008创建了到Mysql的链接服务器,我已经配置了DTC,并且它的状态正在运行,自动,请帮助我如何克服以上错误。
答案 0 :(得分:2)
它的Distrubution tranasaction
属性在链接服务器中创建proc / triggers时会中断,尤其是在使用非MSSQL连接的情况下
1)右键单击链接服务器
2)选择“属性”并启用此功能-将“属性设置为False”
运行程序:
EXEC master.dbo.sp_serveroption @server=N'SVRLINK',
@optname=N'remote proc transaction promotion', @optvalue=N'false
答案 1 :(得分:0)
您尝试过
SET XACT_ABORT OFF
SQL Server正在尝试启动分布式事务,以便在链接服务器(myssql)上可能进行回滚。链接服务器选项中有一些设置可以启用分布式事务。
也许这会有所帮助: Distributed Transaction on Linked Server between sql server and mysql