Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Ausführen eines SSIS-Pakets mit dtexec

Der erste Fehler, den ich ansprechen würde, ist „Der Excel Connection Manager wird in der 64-Bit-Version von SSIS nicht unterstützt, da kein OLE DB-Anbieter verfügbar ist.“

Die Out-of-the-Box-Excel-Treiber existieren nur im 32-Bit-Adressraum. BIDS/SSDT ist eine 32-Bit-Anwendung, sodass Excel-Quellen und -Ziele einwandfrei funktionieren. Wenn Sie sie jedoch über die Befehlszeile/den SQL-Agenten ausführen, müssen Sie explizit die 32-Bit-Version des DTEXEC-Programms verwenden.

Schritt 1 besteht darin, sicherzustellen, dass Sie das Paket über die Befehlszeile auf dem Server ausführen können, auf dem der Agent als Sie selbst ausgeführt wird. Angenommen, Ihr SQL Server ist am üblichen Ort installiert, steht Ihnen wahrscheinlich eine der folgenden DTEXEC.exe zur Verfügung

C:\Program Files\Microsoft SQL Server\90\DTS\Binn\DTExec.exe
c:\Program Files\Microsoft SQL Server\100\DTS\Binn\DTExec.exe
C:\Program Files\Microsoft SQL Server\110\DTS\Binn\DTExec.exe
C:\Program Files\Microsoft SQL Server\120\DTS\Binn\DTExec.exe
C:\Program Files (x86)\Microsoft SQL Server\90\DTS\Binn\DTExec.exe
C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\DTExec.exe
C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\DTExec.exe
C:\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\DTExec.exe

Sie sollten die (x86)-Version verwenden. Zukünftige Leser, wenn Sie zufällig eine 32-Version von Windows (Windows 2003, vielleicht) verwenden, werden die ersten 3 die einzigen Optionen sein, die Ihnen zur Verfügung stehen. Wie aus Viveks Fehlermeldung hervorgeht, führt er ein SSIS-Paket im 64-Bit-Modus aus.

dtexec bietet einen Befehlszeilenschalter /X86 damit Sie dieselbe ausführbare Datei nahtlos für 32- und 64-Bit-Operationen verwenden können. Lügen! Die Dokumentation fordert das heraus, aber wer liest die Dokumentation?

Diese Option wird nur vom SQL Server-Agent verwendet. Diese Option wird ignoriert, wenn Sie das Dienstprogramm dtexec an der Eingabeaufforderung ausführen.

Sie müssen Ihr Paket also ausführen, indem Sie den expliziten Pfad angeben

C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\DTExec.exe /file C:\folder\GICSReport.dtsx

Ich sehe in Ihrer Ausgabe „Fehler beim Entschlüsseln des geschützten XML-Knotens“ und Sie geben auch an, dass Sie Konfigurationsdateien verwenden, sodass Sie höchstwahrscheinlich Ihren PackageProtectionLevel von der Standardeinstellung „EncryptSensitiveWithUserKey“ in „DontSaveSensitive“ ändern können. Diese Funktion dient dazu, die versehentliche Offenlegung sensibler Daten (Passwörter) zu verhindern, aber da Sie dies bereits mit Konfigurationsdateien handhaben, sollte dies kein Problem darstellen. ... Das könnte jetzt, wo ich darüber nachdenke, tatsächlich ein Fehler von einer der anderen Paketschutzstufen sein.

Versuchen Sie auf jeden Fall, zuerst von der ausführbaren 32-Bit-Datei aus zu starten. Wenn dies nicht funktioniert, versuchen Sie, die Paketschutzstufe wie angegeben zu ändern. Wenn einer von beiden dazu führt, dass das Paket wie erwartet ausgeführt wird, versuchen Sie, denselben Befehl über den SQL-Agenten auszuführen.

Wenn alles funktioniert, markieren Sie dies als Antwort. Wenn nicht, aktualisieren Sie bitte das Ticket mit dem aktuellen Fehler, der generiert wird, und wir werden Sie um weitere Informationen bitten.