2011-03-25 172 views
0

我試圖在SQL Server計算機上執行模式文件。我目前同時安裝了SQL Server 2005和SQL Server 2008。當我嘗試執行.sql文件(意味着在2008版本上執行)時,出現以下錯誤。SQL Server 2005和SQL Server 2008的兼容性問題

Microsoft.SqlServer.Management.Common.ConnectionFailureException: 
Failed to connect to server . --->  
Microsoft.SqlServer.Management.Common.ConnectionFailureException: This SQL Server 
version (10.0) is not supported 

是否有指定Microsoft.SqlServer.Management.Smo.dll看起來,當你執行卸載比2005年版的其他程序或其他一些替代方法需要哪個版本的方法嗎?

編輯

,我從ASP.Net應用程序的.sql文件,並使用Microsoft.SqlServer.SMO dll

ServerConnection conn = new ServerConnection(new System.Data.SqlClient.SqlConnection(connString),); 
Server srv = new Server(conn); 

// execute sql file 
srv.ConnectionContext.StatementTimeout = 300000; 
srv.Databases[conn.DatabaseName].ExecuteNonQuery(schema); 
+0

您使用什麼工具,實用程序或應用程序「執行.sql文件」? (SQLDMO暗示我使用的是命令窗口,但似乎不太可能) – 2011-03-25 20:43:44

回答

1

從來沒有試圖從ASP.NET進程中運行SMO的東西,但你可以直接加載文件,分割爲「GO」,然後將其作爲一系列SQL命令運行,而不用大驚小怪。這應該不關心sql版本的問題,除非有某種SQL語句是特定於版本的。

+0

我想過嘗試這個方法,但它好像是一種被黑方法,我很擔心註釋和IF語句。 – mrK 2011-03-25 20:56:16

+0

IFs - 就像IF EXISTS的東西一樣正常工作。或者至少我已經在很多SSMS生成的腳本上使用了它。 – 2011-03-25 21:15:35

+0

感謝您的幫助。我會讓你知道它是怎麼回事。 – mrK 2011-03-27 17:51:24

3

根據您收到的錯誤消息,聽起來非常像您以某種方式使用/訪問SQL 2005實用程序。 「10.0版本」是SQL 2008(與工程營銷相比,工程技術說話)。你確定你正在訪問正確的DLL嗎?

很久很久以前,我碰到類似的東西。我們在一個盒子上安裝了SQL 7.0和2000(我很久以前),我們通過批處理文件Command窗口調用了一些實用程序,我們只能得到該實用程序的舊版/不兼容版本跑。幾天之後,有人[Hi Greg!]認爲要查看DOS環境PATH設置,並且注意,由於文件夾列出的順序,操作系統會在新版本之前找到舊版本。這樣的事情可能會使你絆倒嗎?

+0

同上,用於驗證您是否引用了正確的SQL SMO dll。 2005年和2008年使用不相容的不同SMO。 – ulty4life 2011-03-25 23:26:21

+0

我的問題的一個奇怪的事情是,我有一臺筆記本電腦上運行的應用程序只有2008年安裝,它工作正常。但是,當我將它加載到服務器(使用相同的DLL)時,它會中斷。我試過重新複製dll,並沒有改變任何東西。 – mrK 2011-03-27 18:13:10