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 ...
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:
Accédez à Ajouter ou supprimer des programmes
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.
Désinstaller ce petit gars
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
Juste pour les coups de pied, redémarrez
Vos fichiers devraient maintenant charger correctement adalsql.dll!
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!
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é.