Контекст транзакции используется другим сеансом

У меня есть столMyTable на котором я определил триггер, вот так:

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

Всякий раз, когда я пытаюсь вставить строку вMyTableЯ получаю это сообщение об ошибке:

Msg 3910, Level 16, State 2, Line 1 Transaction context in use by another session.

я имеюSomeLinkedSrv правильно определен как связанный сервер (например,select * from SomeLinkedSrv.Catalog.dbo.OtherTable работает просто отлично).

Как можно избежать ошибки и успешно вставить запись + выполнить триггер?

Ответы на вопрос(6)

настройте связанный сервер без указания ip / hostname и порта сервера базы данных. Достаточно только имени базы данных.

Я использовал тот же связанный сервер для вызова второй процедуры, а затем в процедуру, которую я использовал на том же связанном сервере.

Это очень просто, только мы должны знать ограничения связанных серверов.

используемый другим сеансом». при запуске Insert .... exec через связанный сервер. Исправление для меня было патч от SP2 build 3161 до SP3. SP2 кумулятивный 5 должен исправить, хотя.

https://support.microsoft.com/en-us/kb/947486

удалив связанный сервер, используемый в хранимой процедуре, а затем вызвал хранимую процедуру тем же связанным сервером. Он не работал в среде DEV.

еделенной транзакции, если включен MARS.

Loopback linked servers cannot be used in a distributed transaction. Trying a distributed query against a loopback linked server from within a distributed transaction causes an error, such as error 3910: "[Microsoft][ODBC SQL Server Driver][SQL Server]Transaction context in use by another session." This restriction does not apply when an INSERT...EXECUTE statement, issued by a connection that does not have multiple active result sets (MARS) enabled, executes against a loopback linked server. Note that the restriction still applies when MARS is enabled on a connection.

http://msdn.microsoft.com/en-us/library/ms188716(SQL.105).aspx

перенося связанные базы данных в другой экземпляр sql, решил проблему. В нашей производственной среде эти базы данных уже находятся в отдельных экземплярах.

ВАШ ОТВЕТ НА ВОПРОС