Debugowanie SQL Server integration services

utworzone przez | kwi 19, 2016 | SQL Server | 0 komentarzy

Dziś będzie kilka słów o tym czym jest debugowanie SQL Server integration services. Kilka miesięcy temu napisałem o problemach, gdy korzystamy z 32 bit sterownika w 64 bit SQL Server. Teraz spotkałem się z kolejnym problemem związanym z tym rozwiązaniem. Podnieśliśmy wersję bazy danych z istniejącej SQL Server 2008 R2 do SQL Server 2012. Niestety w efekcie tego mój pakiet, którego używałem do pobierania danych z bazy Oracle przestał działać. A znalezienie rozwiązania wcale nie było tak oczywiste jak by się mogło wydawać. Gdy sprawdziłem “View history” w SQL Sever był tylko błąd i prosty wpis:

“To view the details for the execution right-click on the Integration Services Catalog and open the [All Executions] report”

No więc jak można wykonać Debugowanie SQL Server integration services?

Teraz po aktualizacji SQL Servera moje pakiety SSIS nie są przechowywane w bazie MSDB. Zamiast tego można je znaleźć w bazie “SSISDB” – i to było coś nowego dla mnie 🙂 . No dobrze idźmy dalej. Nazwy tabel same się opisują :

Zacznijmy od znalezienie wartości w polu “Execution_id”. Wszystkie informacje bazują na tym ID. Aby to zrobić musimy pobrać dane z tabeli [SSISDB].[internal].[executions] . Teraz mając tą wartość możemy pobrać pozostałe informacje. Wszystkie kroki, które miały miejsce znajdziemy w tabeli [SSISDB].[internal].[operation_messages] . Ważna uwaga. Kolumna przechowująca nasze “Execution_id” w tej tabeli nazywa się teraz: “operation_id”. W moim przypadku zapytanie wyglądało jak poniżej:

[code language="csharp"]
SELECT TOP 1000 [operation_message_id]
,[operation_id]
,[message_time]
,[message_type]
,[message_source_type]
,[message]
,[extended_info_id]
FROM [SSISDB].[internal].[operation_messages]
where operation_id = '160256'
[/code]

bo mój “execution_id” wynosił '160256′. Teraz gdy posortujemy wiersze po “operation_message_id” zobaczymy wszystkie kroki które zostały wykonane przez nasz projekt SSIS. A wtedy mogliśmy zobaczyć oczywisty błąd:

Error: The requested OLE DB provider OraOLEDB.Oracle.1 is not registered.
If the 64-bit driver is not installed, run the package in 32-bit mode. Error code: 0x00000000.
An OLE DB record is available. Source: „Microsoft OLE DB Service Components” Hresult: 0x80040154 Description: „Class not registred.”.

No dobrze mamy nasz błąd, ale jak go usunąć?

No cóż rozwiązanie jest bardzo proste. Wystarczy tylko przejść do listy zadań SQL Server agent i znaleźć naszą paczkę SSIS, a następnie ją edytować. W parametrach konfiguracyjnych należy przejść do zakładki Advanced i zaznaczyć checkbox “31-bit runtime”. I to wszystko, paczka po zapisaniu uruchomi się bez problemu.

Jak widzicie w tym stosunkowo krótkim wpisie Debugowanie SQL Server integration services to nie są jakiś magiczne rzeczy i tak na prawdę każdy z nas może sobie poradzić

Written by Tomasz Szulczewski

Od ponad 25 lat w różny sposób związany z IT. Ekspert cybersecurity znany jako Cybersecurity Ninja. Certyfikowany Architekt Microsoft 365. Adwokat prywatności, niedoszły dziennikarz oraz bloger.

Related Posts

Nie znaleziono żadnych wyników

Nie znaleziono szukanej strony. Proszę spróbować innej definicji wyszukiwania lub zlokalizować wpis przy użyciu nawigacji powyżej.

0 komentarzy