use*_*720 6 sql-server powershell x86 windows-server-2016
当我尝试invoke-sql从 Powershell X86执行命令时出现错误
invoke-sqlcmd -Query "SELECT 'HELLO!'" -ServerInstance Server -Database DB
Run Code Online (Sandbox Code Playgroud)
invoke-sqlcmd :无法加载文件或程序集“Microsoft.SqlServer.BatchParser,版本=15.100.0.0,文化=中性,PublicKeyToken=89845dcd8080cc91”或其依赖项之一。该系统找不到指定的文件。
如果我从常规 x64 Powershell 提示符运行完全相同的命令,我不会收到错误
invoke-sqlcmd -Query "SELECT 'HELLO!'" -ServerInstance Server -Database DB
Run Code Online (Sandbox Code Playgroud)
Column1
-------
HELLO!
Run Code Online (Sandbox Code Playgroud)
这是在新建的 Windows 2016 x64 位服务器上:
操作系统名称 Microsoft Windows Server 2016 数据中心版本 10.0.14393 内部版本 14393
我需要 x86 powershell 来运行使用旧版 32 位 ODBC 驱动程序的脚本,它还使用invoke-sql命令。
小智 1
正如其他一些评论中提到的,这可能与位版本有关。如果是这种情况,您可以使用 -RunAs32 标志启动作业,使其像 32 位命名空间一样运行,然后通过 Receive-Job CMDlet 返回任何数据
# I am 64-bit land
$job_handle = Start-Job -RunAs32 -ArgumentList "Relevant Data" -ScriptBlock {
Param ( [string]$stuff_i_need )
# I am 32-bit land
return "Complete"
}
# I am 64-bit land (again)
$result = $job_handle | Wait-Job | Receive-Job
Run Code Online (Sandbox Code Playgroud)
请注意,它将被迫使用名称空间,因此需要传入任何相关数据