Не удалось загрузить adalsql.dll при вызове `Invoke-sqlcmd`

У меня есть VS2015 с SSDT, а также SSMS и SqlServer Модуль PowerShell (который включает команду invoke-sqlcmd), и все же Если я попытаюсь выполнить запрос против хранилища данных Azure SQL так:

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

Я получаю следующую ошибку:

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

Если я попытаюсь установить adalsql.dll, я получаю сообщение о том, что A higher version already exists, и я могу видеть обе версии dll можно найти здесь:

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

и все же, invoke-sqlcmd не может найти его. Любая идея, как либо (A) зарегистрировать существующую dll, чтобы invoke-sqlcmd мог ее найти, или (B) удалить ее, чтобы ее можно было повторно установить?

Кстати, я могу использовать Active Directory Authenticatoin с 32-разрядным SQLCMD.exe, поэтому я знаю, что 32-разрядная dll работает нормально. Это просто 64-разрядная dll, которая неправильно загружается...

Ответ 1

Итак, эта проблема тоже досадовала мне. Я не понимаю, как это произошло, но, возможно, это просто совпадение, что это случилось, когда я установил последнюю версию SSMS. Мое исправление:

1) Перейдите в меню "Установка и удаление программ"

2) В маленьком окне поиска введите sql или просто найдите "Библиотека проверки подлинности Active Directory для SQL Server".

3) Удалите этого маленького парня

4) Перейдите сюда и скачайте последнюю библиотеку ADAL (выберите x64):

https://www.microsoft.com/en-us/download/confirmation.aspx?id=48742

5) Только для пинков, перезагрузка

6) Теперь ваш материал должен правильно загрузить adalsql.dll!

Ответ 2

В моем случае виновником был VS 2019. Он имеет более новую версию пакета ADALSQL. Для меня это было по пути "C:\ProgramData\Microsoft\VisualStudio\Packages\sql_adalsql, версия = 16.0.61903.25110, chip = x64, language = en-US", который я удалил и установил нужную версию, чтобы решить проблему.

Надеюсь это поможет!

Ответ 3

В моем случае при добавлении/удалении программ не было установлено ни одного установленного экземпляра "Библиотеки проверки подлинности Active Directory". Тем не менее, попытка установить библиотеку потерпит неудачу, сказав, что установлена более новая версия.

Я отключил себя, открыв редактор реестра (regedt32) и используя функцию поиска из

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer

ищу adalsql.

Это получил удар, содержащий ключи

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

наряду с, что важно, путем к соответствующему установщику. Для меня это было что-то вроде c:\windows\installer\4c334521.msi. Я запустил эту MSI и, наконец, смог "удалить". После этого запуск установщика по ссылке "библиотека", приведенной выше, наконец заработал.

Ответ 4

Или, если вы планируете обновить SSMS, просто удалите "Библиотеку аутентификации Active Directory для SQL Server" и восстановите SSMS.

В следующий раз, когда вы обновите SSMS, ничего не сломается. SSMS приносит свой собственный adalsql.dll и знает, как его обновить при обновлении SSMS. Но если вы установили adalsql с чем-то другим (или с помощью https://www.microsoft.com/en-us/download/confirmation.aspx?id=48742), SSMS каким-то образом сломан.