web-dev-qa-db-fra.com

Impossible de charger l'erreur adalsql.dll lors de l'appel de `Invoke-sqlcmd`

J'ai VS2015 avec SSDT installé, avec SSMS et SqlServer module PowerShell (qui inclut le invoke-sqlcmd comand), et pourtant, si j'essaie d'exécuter une requête sur un Azure SQL Data Warehouse comme ceci:

invoke-sqlcmd  -Query "Select top 5 * from customer"  -ConnectionString "Server=tcp:my.database.windows.net,1433;Database=Customer;  Authentication=Active Directory Integrated; Encrypt=True; "

J'obtiens l'erreur suivante:

invoke-sqlcmd : Unable to load adalsql.dll (Authentication=ActiveDirectoryIntegrated). Error code: 0x2. For more information, see
http://go.Microsoft.com/fwlink/?LinkID=513072
At line:1 char:1
+ invoke-sqlcmd  -Query "Select top 5 * from vwOffer"  -ConnectionStrin ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Invoke-Sqlcmd], SqlException
    + FullyQualifiedErrorId : SqlExectionError,Microsoft.SqlServer.Management.PowerShell.GetScriptCommand

invoke-sqlcmd :
At line:1 char:1
+ invoke-sqlcmd  -Query "Select top 5 * from vwOffer"  -ConnectionStrin ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ParserError: (:) [Invoke-Sqlcmd], ParserException
    + FullyQualifiedErrorId : ExecutionFailureException,Microsoft.SqlServer.Management.PowerShell.GetScriptComman

Si j'essaie d'installer adalsql.dll directement, je reçois un message indiquant que A higher version already exists et je peux voir que les deux versions de la DLL peuvent être trouvées ici:

 C:\Windows\SysWOW64\adalsql.dll
 C:\Windows\System32\adalsql.dll

et pourtant, invoke-sqlcmd ne peut pas le trouver. Une idée de comment (A) enregistrer la DLL existante afin que invoke-sqlcmd puisse la trouver ou (B) la désinstaller afin qu'elle puisse être réinstallée?

Soit dit en passant, je suis capable d'utiliser Active Directory Authenticatoin avec le SQLCMD.exe 32 bits, donc je sais que la DLL 32 bits fonctionne correctement. C'est juste la DLL 64 bits qui ne se charge pas correctement ...

22
Jthorpe

Donc, ce problème m'a aussi contrarié. Je ne sais pas comment cela s'est produit, mais c'est peut-être juste une coïncidence si cela s'est produit lorsque j'ai installé la dernière version de SSMS. Ma solution était de:

  1. Accédez à Ajouter ou supprimer des programmes

  2. Dans la petite fenêtre de recherche, tapez sql, ou allez simplement trouver: "Bibliothèque d'authentification Active Directory pour SQL Server".

    Remarque: Ce ne sera pas dans la liste des programmes installés de Windows si vous avez installé Visual Studio 2019. Vous pouvez exécuter le même programme d'installation en appelant MsiExec.exe /I{6BF11ECE-3CE8-4FBA-991A-1F55AA6BE5BF} à partir d'une invite de commande.

  3. Désinstaller ce petit gars

  4. Naviguez ici et téléchargez la dernière bibliothèque ADAL (choisissez x64):
    https://www.Microsoft.com/en-us/download/confirmation.aspx?id=48742

  5. Juste pour les coups de pied, redémarrez

  6. Vos fichiers devraient maintenant charger correctement adalsql.dll!

35
Bill Sambrone

Dans mon cas, le coupable était VS 2019. Il a une version plus récente du package ADALSQL. Pour moi, c'était au chemin "C:\ProgramData\Microsoft\VisualStudio\Packages\sql_adalsql, version = 16.0.61903.25110, chip = x64, language = en-US", que j'ai désinstallé et installé la version souhaitée pour résoudre le problème.

J'espère que cela t'aides!

2
kiran

Dans mon cas, l'ajout/suppression de programmes n'affichait aucune instance installée de "Bibliothèque d'authentification Active Directory". Pourtant, essayer d'installer la bibliothèque échouerait en disant qu'une version plus récente a été installée.

Je me suis décroché en ouvrant l'éditeur de registre (regedt32) et en utilisant la fonction Rechercher de

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer

recherche de adalsql.

Qui a eu un coup avec contenant des clés

DisplayName: Active Directory Authentication Library for SQL Server
DisplayVersion: 15.0.1300.359

avec, surtout, un chemin d'accès au programme d'installation associé. Pour moi, c'était quelque chose comme c:\windows\installer\4c334521.msi. J'ai couru ce msi et j'ai finalement pu "désinstaller". Après cela, l'exécution du programme d'installation à partir du lien "bibliothèque" ci-dessus a finalement fonctionné.

1
Tommy