2013-12-17 90 views
1

是的,我沒加4個dll文件,在發現:Microsoft.SqlServer.Management.Smo無法找到服務器類

C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies 

這是這些:

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

而且修改應用程序配置等等它接受的版本的DLL文件有:

<startup useLegacyV2RuntimeActivationPolicy="true"> 
</startup> 

而且從VB.NET進口:

Imports Microsoft.SqlServer.Management.Smo 
Imports Microsoft.SqlServer.Management.Common 

而且程序識別的每一個字,除了服務器:

Dim fileInfo As New FileInfo(fi.FullName) 
Dim script As String = fileInfo.OpenText().ReadToEnd() 
Dim connection As New SqlConnection(sqlConnectionString) 
Dim server As New Server(New ServerConnection(connection)) 
server.ConnectionContext.ExecuteNonQuery(script) 

它說:

'Type Server is not defined' 

因此該計劃失敗。關於發生了什麼的任何想法?我很確定一個相同的場景正在另一臺計算機上測試項目,我不知道爲什麼這不起作用。謝謝。

UPDATE:

我試圖從有這個計劃工作到這裏的計算機帶來的dll文件,幷包含Smo的服務器,所以沒有什麼錯誤。但是當我構建這個程序時,它就像是在運行時或更新過程中更改了dll,因爲Server突然再次被標記爲錯誤,並且Smo不再包含它,爲什麼會發生這種情況?

+0

你只是想從一個文件執行腳本? – christiandev

+0

是的,非常。 – user1676874

+0

執行腳本時SMO是矯枉過正的。使用ADO.NET –

回答

1

不幸的是,SMO不是可以通過複製DLL來部署的東西。我們在我們的應用程序中(包括RMO和其他應用程序)都有這個功能,並且將其部署到生產中是一種正確的方式。它需要運行適當的MS安裝程序。

你可以從這裏得到他們: http://www.microsoft.com/en-us/download/details.aspx?id=16978

或者,64位安裝: http://go.microsoft.com/fwlink/?LinkID=188439&clcid=0x409

+0

爲什麼你說這是一種痛苦? – user1676874

+0

這是一個部署的痛苦,因爲我們不能簡單地打包我們的安裝程序幷包含DLL。它甚至不像打包微軟安裝程序那麼簡單。很多sql組件安裝程序都依賴於目標OS和CPU體系結構 - SMO有三個版本,一個用於x86,一個用於x64,另一個用於ia64。另外還需要大量的安裝程序。它使產品部署變得混亂,而且是痛苦。 如果我在這裏不夠清楚,SMO將無法複製應用程序使用的SMO DLL。您需要運行SQL管理對象安裝程序。我無法發佈直接鏈接 – 2013-12-18 01:28:32

+0

好的,如果我想部署此程序,我將不得不確保每個用戶都安裝了SQL管理對象?這看起來像是一個問題。我不知道SMO是如此麻煩。它被賣給了我,因爲它讓事情變得更容易,猜測他們錯了。 – user1676874

相關問題