{"id":388,"date":"2018-04-07T19:42:50","date_gmt":"2018-04-07T18:42:50","guid":{"rendered":"https:\/\/www.csopro.de\/biblog\/?p=388"},"modified":"2018-04-09T18:44:41","modified_gmt":"2018-04-09T17:44:41","slug":"ssis-fehlerbehebung-bei-excel-destination-schreibt-keine-zeilen","status":"publish","type":"post","link":"https:\/\/www.csopro.de\/biblog\/2018\/04\/ssis-fehlerbehebung-bei-excel-destination-schreibt-keine-zeilen\/","title":{"rendered":"SSIS: Fehlerbehebung bei &#8222;Excel Destination schreibt keine Zeilen&#8220;"},"content":{"rendered":"<p>In einem aktuellen Projekt leiten wir Daten in eine Excel-Datei aus, um sie Benutzern &#8211; wie bisher gewohnt &#8211; zur Verf\u00fcgun gzu stellen. Dabei verwenden wir als Excel-Ziel (Excel destination) eine existierende Excel-Datei (Template), in die wir auf einen Reiter in eine Tabelle Daten einf\u00fcllen .<\/p>\n<p>Leider zeigt dann die Excel Destination ein ziemlich seltsames Verhalten:<\/p>\n<ul>\n<li>Im Visual Studio funktioniert das Schreiben der Datei einwandfrei.<\/li>\n<li>Richtet man einen SQL Server Agent Job ein, der in die Datei schreibt, funktioniert es mal und mal auch nicht. (Kleinere Datenmengen funktionieren, gr\u00f6\u00dfere Datenmengen funktionieren nicht).<br \/>\nDabei wird aber kein Fehler geschmissen. Das ETL l\u00e4uft feherfrei durch. Zwar &#8222;sagt&#8220; SSIS, es h\u00e4tte Daten in die Datei geschrieben, aber es kommen keine Daten an.<\/li>\n<li>Lasse ich den SQL Server Agent Job unter meinem Account laufen (indem ich einen Proxy anlege), so funktioniert es wieder.<\/li>\n<\/ul>\n<p>Im Internet findet man etliche User, die ein \u00e4hnliches Fehlerbild haben. Bei einem Post war ein Hinweis, der mich zur L\u00f6sung brachte: https:\/\/social.msdn.microsoft.com\/Forums\/sqlserver\/en-US\/b8970522-45ac-481c-a900-14f57f37781b\/excel-destination-blank-but-logging-says-it-wrote-14000-rows?forum=sqlintegrationservices<\/p>\n<p>In einer Antwort wird auf diesen Artikel verwiesen: http:\/\/stackoverflow.com\/questions\/23523953\/empty-excel-file-permissions-issue-ssis-excel-destination-buffers-large-record<\/p>\n<h2>Fehlerursache<\/h2>\n<p>Zwar entspricht dieser Post nicht meiner Situation, f\u00fchrte mich aber auf die richtige F\u00e4hrte:<\/p>\n<p>Wenn dtexec.exe unter einem nicht-angemeldeten User ausgef\u00fchrt wird (wie z.B. beim Start durch den SQL Server Agent), so verwendet die Excel Destination &#8211; ab einer bestimmten Gr\u00f6\u00dfe &#8211; eine tempor\u00e4re Datei. So weit so gut. Nur leider versucht es, diese Datei unter<\/p>\n<pre>c:\\users\\default\\AppData\\Local\\Microsoft\\Windows\\...<\/pre>\n<p>anzulegen. Darauf hat aber normalerweise der ausf\u00fchrende User keinen Zugriff.<\/p>\n<p>Nachdem ich dem User Vollzugriff auf dieses Verzeichnis gegeben hatte, funtionierte es.<\/p>\n<h2>Vorgehen zum Finden des Fehlers<\/h2>\n<p>Wie im dem oben genannten Post beschrieben, habe ich auch den Process Explorer von sysinternals verwendet (<a href=\"https:\/\/docs.microsoft.com\/de-de\/sysinternals\/downloads\/procmon\" target=\"_blank\" rel=\"noopener\">Download von Microsoft-Seite<\/a>).<\/p>\n<p>Das Problem ist, dass man zun\u00e4chst sehr viele Informationen erh\u00e4lt.<\/p>\n<p>Filtert man dort auf den User, unter dem der ETL ausgef\u00fchrt wird, ist das Bild schon \u00fcebrsichtlicher (wenn &#8211; wie bei uns &#8211; ein eigener Applikations-User verwendet wird).<\/p>\n<p>Dann kann man noch die erfolgreichen Zugriffe ausblenden<br \/>\n(RESULT is SUCCESS &#8211;&gt; Exclude) oder gar nur die ACCESS DENIED-Ergebnisse anzeigen<br \/>\n(RESULT is ACCESS DENIED &#8211;&gt; Include)<\/p>\n<p>Dann findet man es sehr schnell, wie folgender Screen Shot zeigt:<br \/>\n<a href=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2018\/04\/AccessDenied.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-394 size-large\" src=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2018\/04\/AccessDenied-1024x88.png\" alt=\"\" width=\"474\" height=\"41\" srcset=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2018\/04\/AccessDenied-1024x88.png 1024w, https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2018\/04\/AccessDenied-300x26.png 300w, https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2018\/04\/AccessDenied-768x66.png 768w, https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2018\/04\/AccessDenied.png 1827w\" sizes=\"auto, (max-width: 474px) 100vw, 474px\" \/><\/a><\/p>\n<h2>Ebenfalls interessant<\/h2>\n<p>Bei der Suche nach dem Fehler fand ich auch Posts, in denen die User <em>meinten<\/em>, die Excel-Datei sei leer, weil SSIS die Daten nicht oben eintrug, sondern erst nach etlichen 1000 Zeilen.<\/p>\n<p>Wir hatten das gleiche Ph\u00e4nomen. Man muss aufpassen, dass keine Leerzeilen oben in der Datei sind. Dazu kann man einfach \u00fcber Ctrl-End an das Ende springen und alle \u00fcberz\u00e4hligen Zeilen l\u00f6schen. Somit f\u00fcgt SSIS bereits die Daten oben &#8211; gut sichtbar &#8211; ein.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In einem aktuellen Projekt leiten wir Daten in eine Excel-Datei aus, um sie Benutzern &#8211; wie bisher gewohnt &#8211; zur Verf\u00fcgun gzu stellen. Dabei verwenden wir als Excel-Ziel (Excel destination) eine existierende Excel-Datei (Template), in die wir auf einen Reiter in eine Tabelle Daten einf\u00fcllen . Leider zeigt dann die Excel Destination ein ziemlich seltsames &hellip; <a href=\"https:\/\/www.csopro.de\/biblog\/2018\/04\/ssis-fehlerbehebung-bei-excel-destination-schreibt-keine-zeilen\/\" class=\"more-link\"><span class=\"screen-reader-text\">SSIS: Fehlerbehebung bei &#8222;Excel Destination schreibt keine Zeilen&#8220;<\/span> weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[47,46],"class_list":["post-388","post","type-post","status-publish","format-standard","hentry","category-integrationservices","tag-excel","tag-ssis"],"_links":{"self":[{"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/posts\/388","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\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/comments?post=388"}],"version-history":[{"count":6,"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/posts\/388\/revisions"}],"predecessor-version":[{"id":395,"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/posts\/388\/revisions\/395"}],"wp:attachment":[{"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/media?parent=388"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/categories?post=388"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/tags?post=388"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}