Problem z utworzeniem transakcji w pakiecie SSIS

12

Pracuję nad pakietem, który wymaga transakcji, ale obecnie pojawia się następujący błąd:

SSIS package "CATS-Package.dtsx" starting.
Information: 0x4004300A at Data Flow Task, SSIS.Pipeline: Validation phase is beginning.
Information: 0x4001100A at CATS-Package: Starting distributed transaction for this container.
Error: 0xC001401A at CATS-Package: The SSIS Runtime has failed to start the distributed transaction due to error 0x8004D01B "The Transaction Manager is not available.". The DTC transaction failed to start. This could occur because the MSDTC Service is not running.
SSIS package "CATS-Package.dtsx" finished: Failure.

Oto, co dotychczas wiem:

  • Pakiet 2012
  • Korzystam z wdrażania pakietu
  • Właściwość TransactionOption jest ustawiona na Wymagane
  • Działa z wystąpieniem 2008 R2
  • Mogę ręcznie utworzyć transakcję rozproszoną na instancji i zgodnie z uruchomioną przeglądarką zdarzeń MSDTC.
  • MSDTC ma następujące ustawienia

wprowadź opis zdjęcia tutaj

Czy ktoś może wskazać kierunek, aby znaleźć dodatkowe informacje.

Edycja: Jeden z kroków, które przeczytałem, powiedział, aby uruchomić DTC na lokalnej maszynie z pakietem, a także na serwerze przechowującym instancję. Gdy to zrobiłem, otrzymałem nowy błąd:

Information: 0x4001100A at CATS-Package: Starting distributed transaction for this container.
Error: 0xC001402C at CATS-Package, Connection manager "connectionName": The SSIS Runtime has failed to enlist the OLE DB connection in a distributed transaction with error 0x8004D024 "The transaction manager has disabled its support for remote/network transactions.".
Error: 0xC0202009 at CATS-Package, Connection manager "connectionName": SSIS Error Code DTS_E_OLEDBERROR.  An OLE DB error has occurred. Error code: 0x8004D024.
Error: 0xC00291EC at Execute SQL Task - Max Product ID, Execute SQL Task: Failed to acquire connection "connectionName". Connection may not be configured correctly or you may not have the right permissions on this connection.

Ważną częścią jest to, The transaction manager has disabled its support for remote/network transactions. że brakuje mi czegoś w uprawnieniach? Uwaga: Allow Remote Clientsrównież zostało sprawdzone.

Widziałem ping MSDTC wspomniany (w tym w komentarzach poniżej), ale kiedy na niego spojrzałem, nie jestem pewien, co z tym zrobić.

Kenneth Fisher
źródło
1
Znaleziono bardziej szczegółowe informacje, które faktycznie pokazują niektóre kroki rozwiązywania problemów dla DTC i SSIS: richardlees.blogspot.com/2010/01/…
1
Jakiej metody używasz do ustawienia transakcji w pakiecie SSIS?
Zane,
1
Sprawdź dziennik zdarzeń aplikacji pod kątem błędów z msdtc, pobierz MSDTC ping support.microsoft.com/en-us/kb/918331
Sprri
@ Spörri Nic nie widziałem w dzienniku zdarzeń na kliencie lub serwerze. Patrzyłem na MSDTC, ale wygląda (na pierwszy rzut oka) nad moją głową.
Kenneth Fisher
1
@KennethFisher Miałem na myśli tylko nazwę serwera w teście PowerShell, jeśli dostałeś informacje, RPC jest otwarte.
Bob Klimes,

Odpowiedzi:

10

Rozwiązałem problem. Czytałem w kilku miejscach, że DTC należy uruchomić na maszynie źródłowej, a także w miejscu docelowym. Więc na moim miejscu jest moja stacja robocza, a także serwer, na którym znajduje się instancja.

Po włączeniu MSDTC otrzymałem nowy błąd:

Information: 0x4001100A at CATS-Package: Starting distributed transaction for this container.
Error: 0xC001402C at CATS-Package, Connection manager "connectionName": The SSIS Runtime has failed to enlist the OLE DB connection in a distributed transaction with error 0x8004D024 "The transaction manager has disabled its support for remote/network transactions.".
Error: 0xC0202009 at CATS-Package, Connection manager "connectionName": SSIS Error Code DTS_E_OLEDBERROR.  An OLE DB error has occurred. Error code: 0x8004D024.
Error: 0xC00291EC at Execute SQL Task - Max Product ID, Execute SQL Task: Failed to acquire connection "connectionName". Connection may not be configured correctly or you may not have the right permissions on this connection.

Ważną częścią jest The transaction manager has disabled its support for remote/network transactions.

Tam przeprowadziłem dodatkowe badania i wreszcie zdałem sobie sprawę, że nie skonfigurowałem lokalnego DTC, aby umożliwić dostęp do sieci itp. Raz skonfigurowałem go, aby umożliwić dostęp do DTC w sieci, zezwalać na połączenia zdalne i zezwalać na połączenia wyjściowe, wszystko działało sprawnie.

wprowadź opis zdjęcia tutaj

Nie jestem pewien, czy są to minimalne uprawnienia wymagane do połączenia lokalnego, ale wydaje się, że tak.

Kenneth Fisher
źródło