Pourquoi ma connection ODBC échoue-t-elle lors de l'exécution d'un chargement SSIS dans Visual Studio, mais pas lors de l'exécution du même package à l'aide de l'utilitaire de package d'exécution

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 connections Data Warehouse.ssusr a échoué avec le code d'erreur 0xC0014009".

Quand je teste la connectivité du Connection Manager Data Warehouse.ssusr, je vois que ça passe.

Lorsque j'exécute le package en dehors de Visual Studio à l'aide de l'utilitaire de package d'exécution, 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 tâches SQL Server, si cela a quelque chose à voir avec quoi que ce soit.

Faire quelques suppositions ici, mais je vais supposer que c'est un problème 32 vs 64 bits. Pour vérifier, essayez ces deux commands à partir d'une invite de command (Windows Key, 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 va être important car vos pilotes et les DSN que vous avez créés ne seront visibles que dans le monde 32/64 bits.

Fixation SSDT

Une fois que vous avez identifié celui dont vous avez besoin, probablement une version 32 bits, vous devez vous assurer que votre projet utilise le bon time d'exécution. Faites un clic droit sur votre projet et select properties, puis accédez à l'onglet Débogage sous les propriétés de configuration.

Onglet de débogage, Run64BitRuntime

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

Correction d'un agent SQL

Vous devrez modifier le travail SQL Agent existant pour modifier la valeur de l'étape du travail. Ce sera sous l'onglet Configuration, puis sous l'onglet Avancé. Cochez / Décochez l'exécution 32 bits.

onglet 32 ​​bits de l'agent

Mensonges et tromperie

Les gens qui observent peuvent voir que le dtexec offre une option /X86 . Ne le crois pas. La seule façon d'get le bit-ness correct est d'appeler explicitement le bon dtexec.exe La documentation le dit même mais personne ne 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 command.