我写这个是为了在本地机器上查找 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 个实例
- rk2k3-vm-sr(sql2008实例)
- rk2k3-vm-sr\sql2k8express (sql2k8 instacne)
- 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 服务都在运行。