當我從PowerShell中執行以下腳本我得到的例外無法加載文件或程序集「Microsoft.SqlServer.BatchParser,版本= 9.0.242.0,文化=中性公鑰= 89845dcd8080cc91」
Add-type -AssemblyName "Microsoft.SqlServer.BatchParser"
但是,當我確認我組裝我可以看到多個實例,所以有人告訴我可能是什麼問題
當我從PowerShell中執行以下腳本我得到的例外無法加載文件或程序集「Microsoft.SqlServer.BatchParser,版本= 9.0.242.0,文化=中性公鑰= 89845dcd8080cc91」
Add-type -AssemblyName "Microsoft.SqlServer.BatchParser"
但是,當我確認我組裝我可以看到多個實例,所以有人告訴我可能是什麼問題
如果我理解正確this article,權力地獄使用靜態內部表用於翻譯像Microsoft.SqlServer.BatchParser
完全限定的程序集名稱的名稱,所以你可能需要像
Add-Type -Assembly 'Microsoft.SqlServer.BatchParser, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91'
或使用LoadWithPartialName()
[Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.BatchParser')
加載所需的組件。
我遇到了麻煩,連Ansgar的回答都沒有幫助。我的問題是,從任務調度程序運行時,未能從SQLPS
模塊運行Invoke-SqlCmd
。我試了Rundeck和Windows任務計劃程序,兩者都導致相同的錯誤。直接在ISE中運行原始腳本可以正常工作。
要解決我的問題,我利用Invoke-SqlCmd2
從RamblingCookieMonster在GitHub上,因爲它不依賴於加載那些被失敗的組件。 Ansgar的答案是有效的,但可能不包括所有情況。對於其他情況,請嘗試使用RamblingCookieMonster from GitHub。
您可以直接在PowerShell中從GitHub通過運行以下命令加載它:
Invoke-Expression "$((New-Object System.Net.WebClient).DownloadString("https://raw.githubusercontent.com/RamblingCookieMonster/PowerShell/master/Invoke-Sqlcmd2.ps1"))"