Я написал это для поиска экземпляров сервера 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 instacne)
- rk2k3-vm-sr \ sqlexpress (экземпляр sql2k5)
Но он показывает только 2 и 3. 1 не показывает. И когда я подключаюсь, используя объект сервера, он выходит из строя для sql2k8express.
Вот вывод ....
-> Экземпляр RK2K3-VM-SR \ SQLEXPRESS
мастер * * 1 021
модель
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 олицетворение Identity)
в 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 inSe
RVer)
в Microsoft.SqlServer.Management.Smo.SqlSmoObject.InitializeStringComparer ()
в Microsoft.SqlServer.Management.Smo.AbstractCollectionBase.get_StringCompar
эр ()
в Microsoft.SqlServer.Management.Smo.SimpleObjectCollectionBase.InitInnerCol
разночтение ()
в Microsoft.SqlServer.Management.Smo.SmoCollectionBase.get_InternalStorage ()
в Microsoft.SqlServer.Management.Smo.SmoCollectionBase.InitializeChildCollec
тион (логическое обновление)
в Microsoft.SqlServer.Management.Smo.SmoCollectionBase.GetEnumerator ()
в ConsoleApplication3.Program.Main (String [] args) в C: \ Documents and Settin
gs \ Administrator.APP \ Desktop \ ConsoleApplication3 \ Program.cs: строка 25
Как я могу это исправить? Мой системный брандмауэр отключен, и все службы sql работают.