2011-09-28 71 views
0

爲了使用SMO,是否需要在Web服務器上安裝任何與SQL Server相關的東西?我已經構建了一個以編程方式創建SQL代理作業的Web應用程序,並添加了一個步驟(最終激發了dtexec運行SSIS包)並執行。在帶有ASP.NET的Web服務器上使用SMO

這工作正常,我的本地機器上安裝了SQL客戶端工具,但是當我移動到Web服務器時,我得到參考問題,我開始認爲這是由於未安裝的東西。

無法加載文件或程序集 'Microsoft.SqlServer.SqlClrProvider,版本= 10.0.0.0,文化=中性公鑰= 89845dcd8080cc91' 或它的一個依賴。

+0

從技術上講,您應該只需要複製所有缺少的程序集,這些程序集可能會使用SQL Client工具安裝程序自動在本地計算機上進行GAC。但是,在Web服務器上安裝SQL Client工具也可能更容易。 – mellamokb

+0

如果可能,我真的很想避免在Web服務器上安裝更多的東西。我在GAC中看到這個程序集,但是找不到一個真正的dll放入我的bin目錄。 – BomberFan

回答

1

這是一個老鼠洞。

問題是,一旦找到該程序集並將其複製到應用程序的bin文件夾中,它將會抱怨完全不同的一個......或者甚至是由於缺少依賴關係而導致相同的文件。

欲瞭解更多信息,請閱讀此:http://www.sqldbadiaries.com/2010/10/20/how-i-fixed-could-not-load-file-or-assembly-microsoft-sqlserver-smo-version10-0-0-0-issue/

該網站列出了需要的文件,你需要註冊和GAC幾個文件的事實。坦率地說,只需咬緊牙關並在客戶端安裝客戶端工具即可。

0

是的,您的應用程序需要此程序集的bin目錄才能正常工作。此錯誤意味着服務器沒有SMO(及其從屬)程序集。

回到Visual Studio的解決方案中,右鍵單擊上面的程序集,然後選擇/更改「Copy Local」爲「True」。對於您引用的每個SMO組件複製此內容。

當你發佈你的應用程序時,這會將你的開發機器上的這些.DLL文件放在發佈的bin目錄中。

  • 檢查你的web.config文件的任何引用以及
  • 搜索您的代碼SqlClrProvider

enter image description here

+0

雖然我沒有看到這個程序集的任何引用。我已經引用了以下5個程序集,我確信它們在發佈後位於我的bin文件夾中:microsoft.sqlserver.connectioninfo.dll,microsoft.sqlserver.management.sdk.sfc.dll,microsoft.sqlserver.smo.dll ,microsoft.sqlserver.smoextended.dll,microsoft.sqlserver.sqlenum.dll – BomberFan

+0

@user檢查您的web.config。 –

+0

另外,我在這5個dll上試過Copy Local = True,但他們沒有複製,我猜這是因爲他們在GAC – BomberFan

相關問題