Здравствуйте, Odi$$ey, Вы писали:
OE>та же фигня, проверяется наличие инстанции с именем по-умолчанию
Неправда, не та же. Ведь никто не мешает перебрать все экземпляры серверов, а не искать по заранее заданному имени. Вот код:
using System;
using System.Management;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Instance name Edition");
Console.WriteLine("----------------------------------------------------------");
ManagementObjectSearcher getSqlServices = new ManagementObjectSearcher(
"root\\Microsoft\\SqlServer\\ComputerManagement10",
"SELECT * FROM SqlService WHERE SQLServiceType = 1");
foreach (ManagementObject sqlService in getSqlServices.Get())
{
string serviceName = (string)sqlService["ServiceName"];
ManagementObjectSearcher getAdvancedProperties = new ManagementObjectSearcher(
"root\\Microsoft\\SqlServer\\ComputerManagement10",
"SELECT * FROM SqlServiceAdvancedProperty WHERE " +
"SQLServiceType = 1 AND ServiceName = '" + serviceName + "'");
string edition = "<Unknown>";
foreach (ManagementObject property in getAdvancedProperties.Get())
{
if ((string)property["PropertyName"] == "SKUNAME" && (uint)property["PropertyValueType"] == 0)
{
edition = (string)property["PropertyStrValue"];
}
}
Console.WriteLine(serviceName.PadRight(20) + edition);
}
}
}
Вот вывод:
Instance name Edition
----------------------------------------------------------
MSSQL$SQL2005 Developer Edition
MSSQL$SQLEX2008 Express Edition with Advanced Services
MSSQL$SQLEXPRESS Express Edition
|