1

我写这个是为了在本地机器上查找 sql server 实例:

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:无法连接到服务器 RK2K3-VM-SR\SQL2K8EXPRESS。---> Microsoft.SqlServer.Management.Common.ConnectionFailureException:不支持此 SQL Server 版本 (10.0)。在 Microsoft.SqlServer.Management.Common.ConnectionManager.CheckServerVersion (ServerVersion 版本) 在 Microsoft.SqlServer.Management.Common.ConnectionManager.InternalConnect(Wi ndowsIdentity impersonatedIdentity) 在 Microsoft.SqlServer.Management.Common.ConnectionManager.Connect() ---内部异常堆栈跟踪结束 --- 在 Microsoft.SqlServer.Management.Common.ConnectionManager.Connect() 在 Microsoft.SqlServer.Management.Common.ConnectionManager.PoolConnect() 在 Microsoft.SqlServer.Management.Common.ConnectionManager.get_ServerVersion( ) 在微软。

我怎样才能解决这个问题?我的系统防火墙被禁用,所有 sql 服务都在运行。

4

1 回答 1

3

这段代码以前是为 SQL 2005 编写的吗?如果是,你需要

  1. 在机器上为 SQL 2008 + 管理对象安装 SQL 2005 向后兼容包。(http://www.microsoft.com/downloads/details.aspx?FamilyID=b33d2c78-1059-4ce2-b80d-2343c099bcb4&displaylang=en

  2. 删除对 SLQ 2005 的 SDK dll 的引用并重新引用 SQL 2008 的 SK Dll。 ( http://msdn.microsoft.com/en-us/library/ms162129.aspx )

  3. 重建。

另请参阅:应用程序在 SQL 2008 机器上找不到 Microsoft.SQLServer.SMO

于 2009-07-16T06:08:14.023 回答