Witam,
walczę z tematem i coś nie mogę dojść do brzegu. Generalnie geneza "problemu" jest taka, że chcemy aby na 1 serwerze (SQL Server 2014) gdy zostaną wprowadzone nowe wartości do tabeli - został uruchomiony job na drugim serwerze (także SQL Server 2014). Serwery podłączone ze sobą przez "Linked Servers".
Na serwerze 1 stworzyłem Trigger:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [dbo].[tr_Test] ON [dbo].[Xrate]
AFTER INSERT
AS
BEGIN
EXEC [CDWSVR03].msdb..sp_start_job
@job_name = 'TriggerTest2';
END
GO
Na serwerze 2 stworzyłem job "TriggerTest2" - ot prosty przykład który wprowadza jakieś dane do tabeli.
I teraz tak serwery się "widzą" i mogą się odpytywać ... po małych problemach i googlowaniu mogę także bezpośrednio z serwera 1 odpalić job na serwerze 2 (ustawienie RPC Out = True w właściwościach "Linked ServerS"). Niestety mogę to zrobić tylko bezpośrednio z okna " new query". Natomiast już żeby job się odpalił po przez Trigger dostaję błąd:
OLE DB provider "SQLNCLI11" for linked server "CDWSVR03" returned message "No transaction is active.".
Msg 7391, Level 16, State 2, Procedure tr_Test, Line 5
The operation could not be performed because OLE DB provider "SQLNCLI11" for linked server "CDWSVR03" was unable to begin a distributed transaction.
Dodam, że na początku miałem podobny błąd tylko wtedy w 1 linii miałem:
OLE DB provider "SQLNCLI11" for linked server "CDWSVR03" returned message "CDWSVR03" was unable to begin a distributed transaction."
Ale szukając rozwiązania natrafiłem na artykuł: https://www.virtualizationhowto.com/2015/04/ole-db-provider-sqlncli11-linked-server-unable-distributed-transaction/
Wydaje mi się, że zastosowałem się do wytycznych i ostatecznie błąd zmienił na ten zacytowany jako pierwszy: "..returned message "No transaction is active."."
Nie wiem jak z tym ruszyć dalej :| Podpowiedzcie proszę co tu robić dalej :)
Z góry dzięki,
BB