Jth*_*rpe 22 sql-server invoke-sqlcmd
我安装了带有SSDT的 VS2015 ,以及 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; "
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
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
Run Code Online (Sandbox Code Playgroud)
如果我尝试直接安装adalsql.dll,我会收到一条消息,说明A higher version already exists我可以在这里找到这两个版本的dll:
C:\Windows\SysWOW64\adalsql.dll
C:\Windows\System32\adalsql.dll
Run Code Online (Sandbox Code Playgroud)
然而,invoke-sqlcmd无法找到它.任何想法如何(A)注册现有的DLL,以便invoke-sqlcmd可以找到它或(B)卸载它,以便它可以重新安装?
顺便说一句,我是能够使用Active Directory Authenticatoin与32位SQLCMD.exe,所以我知道32位DLL工作正常.这只是64位dll没有正确加载...
Bil*_*one 35
所以,这个问题也让我感到烦恼.我不清楚它是如何发生的,但也许只是巧合,它发生在我安装最新版本的SSMS时.我的修复是:
1)导航到"添加或删除程序"
2)在小搜索窗口中键入sql,或者直接找到:"SQL Server的Active Directory身份验证库".
3)卸载那个小家伙
4)在此处导航并下载最新的ADAL库(选择x64):
https://www.microsoft.com/en-us/download/confirmation.aspx?id=48742
5)只是为了踢,重启
6)你的东西现在应该正确加载adalsql.dll!
确保您确实安装了 ADAL(存在C:\Windows\system32\adal.dll很多)
将其粘贴到 .reg 文件中:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSADALSQL]
"TargetDir"="C:\\Windows\\System32\\adal.dll"
Run Code Online (Sandbox Code Playgroud)
双击 .reg 文件以安装该值
你完成了。去庆祝吧!
发生此错误是因为 SQL Server 的 .NET 适配器找不到 adal.dll。但这是为什么呢?安装好了对吧?
那么,对于ADAL的最新版本(与VS 2019包装和SQL塞雷尔语Management Studio中的最新版本)的安装程序中增加了对DLL(在32位版本的注册表项C:\Windows\SysWOW64\adal.dll),但并没有添加对入境64 位版本(安装到C:\Windows\system32\adal.dll)。如果您在 32 位模式下构建和运行您的应用程序,您将永远不会看到此错误清单。
这只是 ADAL 安装程序中的一个错误。微软可能没有检测到它,因为Visual Studio 和 SSMS 都是 32 位应用程序,因此不会去寻找 64 位版本。
| 归档时间: |
|
| 查看次数: |
9884 次 |
| 最近记录: |