Не удалось загрузить 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 каким-то образом сломан.