Я написал это для поиска экземпляров сервера sql на локальной машине:
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)
- 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.Com mon.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( ) в Microsoft.SqlServer.Management.Smo.ExecutionManager.get_ServerVersion() в Microsoft.SqlServer.Management.Smo.SqlSmoObject.GetDbComparer(Boolean inServer) в Microsoft.SqlServer.Management.Smo.SqlSmoObject.InitializeStringComparer() в Microsoft.SqlServer .Management.Smo.AbstractCollectionBase.get_StringComparer() в Microsoft.SqlServer.Management.Smo.SimpleObjectCollectionBase. InitInnerCollection() в Microsoft.SqlServer.Management.Smo.SmoCollectionBase.get_InternalStorage() в Microsoft.SqlServer.Management.Smo.SmoCollectionBase.InitializeChildCollection (логическое обновление) в Microsoft.SqlServer.Management.Smo.SmoCollectionBase.GetEnumerator() в ConsoleApplication3.Program.Main(String[] args) в C:\Documents and Settings\Administrator.APP\Desktop\ConsoleApplication3\Program.cs:строка 25
Как я могу это исправить? Мой системный брандмауэр отключен, и все службы sql работают.