Cri*_*scu 12 t-sql triggers linked-server sql-server-2008-r2
我有一个名为MyTableon 的表,我已经定义了一个触发器,如下所示:
CREATE TRIGGER dbo.trg_Ins_MyTable
ON dbo.MyTable
FOR INSERT
AS
BEGIN
SET NOCOUNT ON;
insert SomeLinkedSrv.Catalog.dbo.OtherTable
(MyTableId, IsProcessing, ModifiedOn)
values (-1, 0, GETUTCDATE())
END
GO
Run Code Online (Sandbox Code Playgroud)
每当我尝试插入一行时MyTable,都会收到以下错误消息:
Msg 3910,Level 16,State 2,Line 1事务上下文,由另一个会话使用.
我已SomeLinkedSrv正确定义为链接服务器(例如,select * from SomeLinkedSrv.Catalog.dbo.OtherTable工作正常).
如何避免错误并成功插入记录+执行触发器?
Gra*_*tzy 17
如果启用了MARS,则无法在分布式事务中使用环回链接服务器.
环回链接服务器不能在分布式事务中使用.在分布式事务中尝试针对环回链接服务器的分布式查询会导致错误,例如错误3910:"[Microsoft] [ODBC SQL Server驱动程序] [SQL Server]事务上下文正在被另一个会话使用." 当由未启用多个活动结果集(MARS)的连接发出的INSERT ... EXECUTE语句针对环回链接服务器执行时,此限制不适用.请注意,在连接上启用MARS时,限制仍然适用.
http://msdn.microsoft.com/en-us/library/ms188716(SQL.105).aspx
| 归档时间: |
|
| 查看次数: |
38668 次 |
| 最近记录: |