{"id":112,"date":"2009-12-05T22:40:03","date_gmt":"2009-12-05T21:40:03","guid":{"rendered":"http:\/\/csopro.de\/biblog\/2009\/12\/unerwartetes-nicht-logging-ssis\/"},"modified":"2009-12-05T22:40:03","modified_gmt":"2009-12-05T21:40:03","slug":"unerwartetes-nicht-logging-ssis","status":"publish","type":"post","link":"https:\/\/www.csopro.de\/biblog\/2009\/12\/unerwartetes-nicht-logging-ssis\/","title":{"rendered":"Unerwartetes Nicht-Logging SSIS"},"content":{"rendered":"<p>Dieser Artikel widmet sich nicht dem Logging, das man selbst in einem Paket aktivieren kann und \u00fcber Log-Provider detailliert steuern kann.<\/p>\n<p>Gemeint ist mehr das Logging, das SSIS automatisch ohne Zutun des Entwicklers oder Administrators durchf\u00fchrt, s. dazu auch &#8222;<a title=\"Microsoft: Beschreibung Logging SSIS\" href=\"http:\/\/technet.microsoft.com\/en-us\/library\/cc645946%28SQL.105%29.aspx\" target=\"_blank\">Understanding Events Logged by an Integration Services Package<\/a>&#8222;.<\/p>\n<p>Standardm\u00e4\u00dfig loggt jedes SSIS-Paket den Start, das erfolgreiche Ende oder das Fehlschlagen oder Abbrechen eines SSIS-Pakets:<\/p>\n<p><a href=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2009\/12\/eventlog.jpg\"><img loading=\"lazy\" decoding=\"async\" alt=\"EventLog Start und Failure eines SSIS Pakets\" src=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2009\/12\/eventlog-small.jpg\" width=\"450\" height=\"53\" \/><\/a><\/p>\n<p>(Zum Verg\u00f6\u00dfern auf das Bild klicken)<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"Details des Eventlogs beim Scheitern eines Pakets\" src=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2009\/12\/eventdetails.jpg\" width=\"404\" height=\"263\" \/><\/p>\n<p>(Randbemerkung: Das Logging von Start und erfolgreichem Ende l\u00e4sst sich abschalten &#8211; in der Registry HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SQL Server100SSIS, Wert von &#8222;LogPackageExecutionToEventLog&#8220; auf 1 setzen &#8211; die anderen Eintr\u00e4ge lassen sich nicht verhindern) <\/p>\n<p>In dem Beispiel hatte ich ein SSIS-Paket erstellt, das nur aus einer Script-Task bestand, die immer einen Fehler schmei\u00dft:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"Script-Task zum Fehler schmei\u00dfen\" src=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2009\/12\/paket-schmeisse-fehler.jpg\" width=\"195\" height=\"108\" \/><\/p>\n<p>Dort ist folgender Code enthalten:<\/p>\n<p> public void Main()<br \/>\n{<br \/>\nDts.Events.FireError(999, &#8222;SubKomponente A&#8220;, &#8222;Fehler &#8211; Test fehler&#8220;, &#8222;&#8220;, 0);<br \/>\nDts.TaskResult = (int)ScriptResults.Success;<br \/>\n}<\/p>\n<p>Das Ergebnis ist oben zu bewundern.<\/p>\n<p>Nun hatten wir die Idee, dieses Eintrag im Event Log zu \u00fcberwachen (mit NetIQ oder einem anderen Werkzeug zur \u00dcberwachung von Servern, Diensten, etc.) und so zu erfahren, wenn ein Paket gescheitert ist.<\/p>\n<p><strong>Das funktioniert aber leider nicht.<\/strong><\/p>\n<p>Der Grund ist, dass ein solcher Eintrag im Eventlog nur erzeugt wird, wenn das Paket bereits angelaufen ist. Wenn aber schon bei der Validierung ein Fehler auftritt, wird kein Eintrag im Eventlog erzeugt.<\/p>\n<p>Dazu habe ich das Paket erweitert um einen Data Flow Task, bei dem ich in der Quelle &#8222;SELECT 1 as Zahl&#8220; eingetragen habe. <img loading=\"lazy\" decoding=\"async\" alt=\"SSIS Paket mit Fehler brerits beim Validieren\" src=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2009\/12\/ssis-paket-mit-validation-fehler.jpg\" width=\"164\" height=\"153\" \/><\/p>\n<p>Dieses Paket habe ich dann im SQL Server Agent als Job eingerichtet. Dabei habe ich eingestellt, dass im Fehlerfall der SQL Server Agent das Ergebnis im Eventlog festhalten soll:<\/p>\n<p><a href=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2009\/12\/jobpropertieseventlog-1.jpg\"><img loading=\"lazy\" decoding=\"async\" alt=\"Properties des SQL Server Agent Jobs zum Protokollieren im Event Log\" src=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2009\/12\/jobpropertieseventlog-1-small.jpg\" width=\"450\" height=\"159\" \/><\/a><\/p>\n<p>(Zum Verg\u00f6\u00dfern auf das Bild klicken)<\/p>\n<p>Solange die Quelle des SSIS-Pakets bekannt ist, ist alles wie erwartet. Im Eventlog werden folgende 3 Events festgehalten (da ja mein Script-Task dazu f\u00fchrt, dass das Paket auf einen Fehler l\u00e4uft):<\/p>\n<p><a href=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2009\/12\/eventsconnectionok.jpg\"><img loading=\"lazy\" decoding=\"async\" alt=\"Die Events, die durch ein Paket mit vorhandener Connection erzeugt werden\" src=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2009\/12\/eventsconnectionok-small.jpg\" width=\"450\" height=\"80\" \/><\/a><\/p>\n<p>Die Meldungen sind:<\/p>\n<ol>\n<li>Starten des SSIS Pakets (Information)<\/li>\n<li>Fehler des SSIS Pakets (Fehler)<\/li>\n<li>Fehler des SQL Server Agent Jobs (Warnung)<\/li>\n<\/ol>\n<p>Letzte Meldung sieht im Detail so aus:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"Ereignis-Details der SQL Server Agent-Meldung, dass der Job nicht erfolgreich war\" src=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2009\/12\/eventpropwarningsqlserveragent.jpg\" width=\"403\" height=\"309\" \/><\/p>\n<p>Wenn ich jetzt aber die Connection des Statements &#8222;SELECT 1&#8220; \u00e4ndere, so dass der dort angegebene Computer nicht existiert, passiert folgendes, wenn das Paket im SQL Server Agent gestartet wird:<\/p>\n<p><a href=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2009\/12\/eventlogbeifehlerhafterconnection.jpg\"><img loading=\"lazy\" decoding=\"async\" alt=\"Ereignisanzeige, wenn die Connection des SSIS Pakets nicht validiert werden kann\" src=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2009\/12\/eventlogbeifehlerhafterconnection-small.jpg\" width=\"450\" height=\"50\" \/><\/a><\/p>\n<p>Man sieht, dass die SSIS-Eventlog-Eintr\u00e4ge nicht vorhanden sind. Dies liegt daran, dass der Fehler beim Validieren auftritt und deshalb das Paket noch gar nicht angelaufen ist.<\/p>\n<p>Deswegen macht es keinen Sinn, die SSIS-Eventlog-Eintr\u00e4ge f\u00fcr eine \u00dcberwachung der Jobs zu verwenden.<\/p>\n<p>Stattdessen k\u00f6nnen die SQL Server Agent-Eintr\u00e4ge \u00fcberwacht werden. Dabei ist aber zu beachten, dass dies bei jedem SQL Server Agent Job &#8211; wie oben gezeigt &#8211; eingestellt werden muss.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dieser Artikel widmet sich nicht dem Logging, das man selbst in einem Paket aktivieren kann und \u00fcber Log-Provider detailliert steuern kann. Gemeint ist mehr das Logging, das SSIS automatisch ohne Zutun des Entwicklers oder Administrators durchf\u00fchrt, s. dazu auch &#8222;Understanding Events Logged by an Integration Services Package&#8222;. Standardm\u00e4\u00dfig loggt jedes SSIS-Paket den Start, das erfolgreiche &hellip; <a href=\"https:\/\/www.csopro.de\/biblog\/2009\/12\/unerwartetes-nicht-logging-ssis\/\" class=\"more-link\"><span class=\"screen-reader-text\">Unerwartetes Nicht-Logging SSIS<\/span> weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10,13],"tags":[],"class_list":["post-112","post","type-post","status-publish","format-standard","hentry","category-integrationservices","category-sql-server-agent"],"_links":{"self":[{"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/posts\/112","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/comments?post=112"}],"version-history":[{"count":0,"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/posts\/112\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/media?parent=112"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/categories?post=112"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/tags?post=112"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}