2010-10-20 128 views
16

我寫了一個asp.net web應用程序,它使用SMO對SQL Server 2008能夠運行一些數據庫腳本。它引用這些組件(在C:\ Program Files文件\ Microsoft SQL Server的\ 100 \ SDK \組件文件夾):找不到microsoft.sqlserver.batchparser.dll

Microsoft.SqlServer.ConnectionInfo 
Microsoft.SqlServer.Management.Sdk.Sfc 
Microsoft.SqlServer.Smo 

的microsoft.sqlserver.batchparser.dll不在此文件夾中。 本地(32位機器,IIS7)我沒有問題。

當我發佈應用到我的託管服務提供商(discountasp.net,SQL Server 2008中,IIS7,32位也是如此),我得到這個錯誤:

Could not load file or assembly 'Microsoft.SqlServer.BatchParser, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. The system cannot find the file specified.

我搜索我的本地機器,我不能找到這個程序集。然而,它在這臺機器上運行良好。

「Microsoft SQL Server 2008安裝發現報告」工具報告我在本地安裝了v10.1.2531.0。

感謝

回答

10

爲了得到這個DLL,您需要安裝Microsoft SQL Server 2008的管理對象(可從here)。該特定的dll被安裝到GAC中,這就是爲什麼你可能無法使用搜索找到它。

由於您使用的是託管服務提供商,因此會顯示他們沒有安裝此服務。你的選擇是讓他們安裝(這可能不太可能),或者手動部署dll(這可能是在惡劣的許可基礎上)。

+0

當我嘗試安裝SMO時,安裝程​​序說我已經安裝了更高版本。由於我能夠從我的項目中引用Microsoft.SqlServer.Smo,我想這證實了它。 – 2010-10-20 19:09:35

+1

@Nicolas:是的,你會在本地安裝。但是它不會安裝在您的託管服務提供商上,因此您遇到了問題。 – adrianbanks 2010-10-20 19:11:15

+0

調用gacutil/l讓我看到batchparser在GAC中,但VS2010中的引用對話框不會顯示給我。手動進入GAC來提取程序集,它位於GAC_32文件夾中,而不是GAC_MSIL。無論如何,將此添加到反射器顯示它有一個參考Microsoft.VisualC ....很奇怪。 – 2010-10-20 19:15:12

2

您還需要在您的託管服務提供商處安裝SMO組件。你可以下載它們here

+0

嗯,顯然我無法在共享主機上安裝msi。讓我給他們打電話,讓他​​們知道他們對SMO的評價。 – 2010-10-20 19:20:53

+0

discountasp不會安裝,那麼這是否意味着我必須提取dll +它的依賴項(Microsoft.VisualC)並將其放入我的bin文件夾中? – 2010-10-20 19:49:41

5

首先您需要啓用GAC文件夾的瀏覽:

1.進入註冊表編輯器(RUN>註冊表編輯器)
2.進入到HKEY_LOCAL_MACHINE \ SOFTWARE \微軟\融合
3.右擊融合>新建> DWORD
4.鍵入DisableCacheViewer
5.雙擊DisableCacheViewer
6.將值設置爲1

那麼你可以在這裏找到它
C:\ WINDOWS \裝配\ GAC_32 \ Microsoft.SqlServer.BatchParser \ 10.0.0.0__89845dcd8080cc91

0

你可以安裝從SQL Server DVD SQL客戶端連接功能,以及。我安裝了這個以及SDK組件,以在安裝SolarWinds時解決這個問題。

0

我安裝了SMO x64,但在構建服務器上需要SMO x86。