Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Exécution d'un package SSIS à l'aide de dtexec

La première erreur que je voudrais résoudre est "Le gestionnaire de connexion Excel n'est pas pris en charge dans la version 64 bits de SSIS, car aucun fournisseur OLE DB n'est disponible."

Les pilotes Excel prêts à l'emploi n'existent que dans l'espace d'adressage 32 bits. BIDS/SSDT est une application 32 bits, donc la source et les destinations Excel fonctionnent parfaitement. Cependant, lorsque vous les exécutez à partir de la ligne de commande/de l'agent SQL, vous devez utiliser explicitement la version 32 bits du programme DTEXEC.

L'étape 1 consistera à vous assurer que vous pouvez exécuter le package à partir de la ligne de commande sur le serveur sur lequel l'agent s'exécute en tant que vous-même. En supposant que votre serveur SQL est installé à l'emplacement habituel, vous disposez probablement de l'un des fichiers DTEXEC.exe suivants

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

Vous voudrez utiliser la version (x86). Futurs lecteurs, s'il vous arrive d'être sur une version 32 de Windows (Windows 2003, peut-être), les 3 premières seront les seules options qui s'offrent à vous. Comme le message d'erreur de Vivek l'a indiqué, il exécute un package SSIS en mode 64 bits.

dtexec fournit un commutateur de ligne de commande /X86 pour vous permettre d'utiliser de manière transparente le même exécutable pour les opérations 32 et 64 bits. MENSONGES ! La documentation l'indique, mais qui lit la documentation ?

Cette option est uniquement utilisée par l'Agent SQL Server. Cette option est ignorée si vous exécutez l'utilitaire dtexec à l'invite de commande.

Vous devrez donc exécuter votre package en fournissant le chemin explicite

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

Je vois "Échec du déchiffrement du nœud XML protégé" dans votre sortie et vous indiquez également que vous utilisez des fichiers de configuration afin que vous puissiez très probablement modifier votre PackageProtectionLevel de la valeur par défaut EncryptSensitiveWithUserKey à DontSaveSensitive. Cette fonctionnalité existe pour empêcher l'exposition accidentelle de données sensibles (mots de passe), mais puisque vous gérez déjà cela avec des fichiers de configuration, cela ne devrait pas poser de problème. ... Cela pourrait en fait être une erreur de l'un des autres niveaux de protection du paquet maintenant que j'y pense.

Dans tous les cas, essayez d'abord d'exécuter à partir de l'exécutable 32 bits. Si cela ne fonctionne pas, essayez de modifier le niveau de protection du package comme indiqué. Si l'un ou l'autre fait fonctionner le package comme prévu, essayez d'exécuter la même commande à partir de l'agent SQL.

Si tout fonctionne, marquez ceci comme réponse. Si ce n'est pas le cas, veuillez mettre à jour le ticket avec l'erreur actuelle générée et nous vous demanderons plus d'informations.