web-dev-qa-db-fra.com

Pourquoi ma connexion ODBC échoue lors de l'exécution d'une charge SSIS dans Visual Studio, mais pas lors de l'exécution du même package à l'aide de l'utilitaire d'exécution de package

Je travaille sur un package de chargement Data Mart dans SSIS 2012. Lorsque j'essaie d'exécuter le package dans Visual Studio, j'obtiens cette erreur:

"L'appel de méthode AcquireConnection au gestionnaire de connexions Data Warehouse.ssusr a échoué avec le code d'erreur 0xC0014009".

Lorsque je teste la connectivité de Connection Manager Data Warehouse.ssusr, je vois que cela passe.

Lorsque j'exécute le package en dehors de Visual Studio à l'aide de l'utilitaire d'exécution de package, le package s'exécute.

Je ne comprends pas ce qui se passe.

Le package refuse également de s'exécuter à l'aide de la planification des travaux SQL Server, si cela a quelque chose à voir avec quoi que ce soit.

14
Scott Wood

Faire quelques hypothèses ici, mais je vais supposer qu'il s'agit d'un problème 32 vs 64 bits. Pour vérifier, essayez ces deux commandes à partir d'une invite de commande (touche Windows, R, cmd.exe ou Démarrer, Exécuter, cmd.exe)

"C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\dtexec.exe" /file C:\myPackage.dtsx
"C:\Program Files\Microsoft SQL Server\110\DTS\Binn\dtexec.exe" /file C:\myPackage.dtsx

Le premier exécutera votre package en mode 32 bits tandis que le second l'exécutera en mode 64 bits. Cela importera car vos pilotes et tous les DSN que vous avez créés ne seront visibles que dans le monde 32/64 bits.

Fixer SSDT

Une fois que vous avez identifié celle dont vous avez besoin, probablement la version 32 bits, vous devez vous assurer que votre projet utilise le temps d'exécution approprié. Cliquez avec le bouton droit sur votre projet et sélectionnez Propriétés, puis accédez à l'onglet Débogage sous les propriétés de configuration.

Debugging Tab, Run64BitRuntime

Après avoir inversé la valeur Run64BitRuntime, je suppose que votre package fonctionnera à partir de SSDT.

Correction de l'agent SQL

Vous devrez modifier le travail de l'Agent SQL existant pour modifier la précision de l'étape du travail. Ce sera sous l'onglet Configuration puis sous l'onglet Avancé. Cochez/décochez le runtime 32 bits.

agent 32bit tab

Mensonges et tromperie

Les gens observateurs peuvent voir que le dtexec offre un /X86 option. Ne le croyez pas. Le seul moyen d'obtenir le bit-ness correct est d'appeler explicitement le bon dtexec.exe La documentation en dit même autant mais personne ne lit la documentation.

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

40
billinkc