gpt4 book ai didi

sql-server - SQL Server 2008 : MERGE command on a table that has a trigger causes an error

转载 作者:行者123 更新时间:2023-12-04 01:18:42 24 4
gpt4 key购买 nike

我有一个使用 MERGE 的存储过程同步命令 dbo.tableA[mylinkedserver].dbo.TableA .
TableA有一个与之关联的插入/更新触发器。为了让事情变得非常简单,触发器所做的就是

print 'I am a simple trigger because i dont want to cause errors'

执行 SP 时(通过 .net Windows 应用程序),它会引发此错误:

OLE DB provider "SQLNCLI10" for linked server "MyLinkedServer" returned message "No transaction is active."



如果我删除触发器并再次执行存储的过程,它执行得非常好。

如果我通过 SSMS 运行存储过程,它也可以正常运行(使用触发器)。

两台服务器上都启用了 MSDTC。

服务器是 Windows 2008 服务器,带有 Service Pack 2 的 SQL Server 2008。

为什么触发器会导致此错误?!?!??

最佳答案

使用 Merge 实现触发器有点棘手。它归结为“对于在合并语句中指定的每个操作都必须有一个触发器”。

TechNet 说:“如果目标表上为 MERGE 语句执行的插入、更新或删除操作定义了一个启用的 INSTEAD OF 触发器,那么它必须为 MERGE 语句中指定的所有操作启用一个 INSTEAD OF 触发器.”

http://technet.microsoft.com/en-us/library/bb510625.aspx

关于sql-server - SQL Server 2008 : MERGE command on a table that has a trigger causes an error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5997946/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com