2009-07-16 72 views
1

我寫這篇尋找本地機器上的SQL Server實例:如何使用SMO連接到Sqlserver2008任何解決方法都必須完成?

using System; 
using System.Data; 
using Microsoft.SqlServer.Management.Smo; 

namespace Application3 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 

      string srvname = string.Empty; string srvnames = null; 

      DataTable dt = SmoApplication.EnumAvailableSqlServers(true); 

      Console.WriteLine("------------->" + dt.Rows.Count); 

      foreach (DataRow dr in dt.Rows) 
      { 
       try{ 

       Console.WriteLine("-->Instance " + dr["name"]); 

       Server srv = new Server((string)dr["name"]); 

        foreach (Database db in srv.Databases) 

         Console.WriteLine(db.Name); 
       }catch(Exception e) 
      { 
       Console.writeLine(e.toString()); 
      } 
     } 
    } 
} 

我有3個實例在我的本地機器

  1. rk2k3-VM-SR(SQL2008實例)
  2. rk2k3 -vm-SR \ sql2k8express(sql2k8 instacne)
  3. rk2k3-VM-SR \ SQLEXPRESS(sql2k5實例)

但它只顯示2和3. 1不顯示。當我使用服務器對象連接時,sql2k8express失敗。

這裏是輸出....


- >實例RK2K3-VM-SR \ SQLEXPRESS

模型
msdb中
tempdb的


- >實例RK2K3-VM-SR \ SQL2K8EXPRESS

Microsoft.SqlServer.Management.Common.ConnectionFailureException:無法conn將 ECT服務器RK2K3-VM-SR \ SQL2K8EXPRESS。 ---> Microsoft.SqlServer.Management.Com mon.ConnectionFailureException:此SQL Server版本(10.0)不受支持。 在Microsoft.SqlServer.Management.Common.ConnectionManager.CheckServerVersion (ServerVersion版) 在Microsoft.SqlServer.Management.Common.ConnectionManager.InternalConnect(無線 ndowsIdentity impersonatedIdentity) 在Microsoft.SqlServer.Management.Common.ConnectionManager.Connect () --- Microsoft.SqlServer.Management.Common.ConnectionManager.Connect() (位於Microsoft.SqlServer.Management.Common.ConnectionManager.PoolConnect() )上的內部異常堆棧跟蹤--- 末尾.Management.Common.ConnectionManager.get_ServerVersion( ) at Microsoft.SqlServer.Management.Smo.ExecutionManager.get_ServerVersion() 在Microsoft.SqlServer.Management.Smo.SqlSmoObject.GetDbComparer(布爾櫻雪 rver) 在Microsoft.SqlServer.Management.Smo.SqlSmoObject.InitializeStringComparer() 在Microsoft.SqlServer.Management.Smo.AbstractCollectionBase.get_StringCompar ER( ) 在Microsoft.SqlServer.Management.Smo.SimpleObjectCollectionBase.InitInnerCol 經文() 在Microsoft.SqlServer.Management.Smo.SmoCollectionBase.get_InternalStorage() 在Microsoft.SqlServer.Management.Smo.SmoCollectionBase.InitializeChildCollec 和灰(布爾刷新) at Microsoft.SqlServer.Management.Smo.SmoCollectionBase.GetEnumerator() at ConsoleApplication3.Program.Main(Stri ng [] args)在C:\ Documents and Settin gs \ Administrator.APP \ Desktop \ ConsoleApplication3 \ Program中。cs:line 25

我該如何解決這個問題?我的系統防火牆被禁用,所有的sql服務都在運行。

回答

3

此代碼先前是爲SQL 2005編寫的嗎? 如果是的話,你需要

  1. 安裝SQL 2005向後兼容性包SQL 2008 +管理機器上的對象。 (http://www.microsoft.com/downloads/details.aspx?FamilyID=b33d2c78-1059-4ce2-b80d-2343c099bcb4&displaylang=en

  2. 刪除對SDK 2005 SLQ的dll文件&再參考SK的dll SQL 2008 (http://msdn.microsoft.com/en-us/library/ms162129.aspx)的

  3. 重建。

另請參考:Application cannot find Microsoft.SQLServer.SMO on SQL 2008 machine

+0

不,它是專爲SQL2008 – Cute 2009-07-16 06:17:14

相關問題