Определеить наличие платной версии SQL Server 2008
От: sasha Грузия  
Дата: 02.06.10 14:34
Оценка:
Всем привет. Возникла необходимость определения наличия на машине установленной платной версии SQL Server 2008 (любой, отличной от Express). Погуглил, но четкого ответа не нашел. Может кто сталкивался и может помочь?
Re: Определеить наличие платной версии SQL Server 2008
От: Lloyd Россия  
Дата: 02.06.10 14:45
Оценка:
Здравствуйте, sasha, Вы писали:

S>Всем привет. Возникла необходимость определения наличия на машине установленной платной версии SQL Server 2008 (любой, отличной от Express). Погуглил, но четкого ответа не нашел. Может кто сталкивался и может помочь?


1. Определить наличие: ищется по форуму.
2. Определить версию: коннектишься, выполняешь SELECT @@VERSION, парсишь результат.
Re[2]: Определеить наличие платной версии SQL Server 2008
От: sasha Грузия  
Дата: 02.06.10 14:56
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>1. Определить наличие: ищется по форуму.


Я на этом форуме с 2001 года и о правилах поведения в форуме имею четкое представление. Раз создал тему, значит искал и не нашел. Если есть желание помочь, а не просто напомнить о существовании поиска, буду благодарен. Повторю вопрос, речь идет об этапе инсталляции своего инстанса. Если на компе уже есть платная версия, но делать ничего не надо, если нет — ставится Express+Instance.
Re[3]: Определеить наличие платной версии SQL Server 2008
От: Lloyd Россия  
Дата: 02.06.10 15:08
Оценка: :)
Здравствуйте, sasha, Вы писали:

L>>1. Определить наличие: ищется по форуму.


S>Я на этом форуме с 2001 года и о правилах поведения в форуме имею четкое представление. Раз создал тему, значит искал и не нашел. Если есть желание помочь, а не просто напомнить о существовании поиска, буду благодарен.


Обороты сбавил. Я тут сюда тоже не вчера пришел. Вопрос про поиск сервера периодически поднимается, я даже сам как-то на него отвечал. Так что ищите, Шура, ищите. (c)

S>Повторю вопрос, речь идет об этапе инсталляции своего инстанса.


Нет, вопрос был другой.
Re[4]: Определеить наличие платной версии SQL Server 2008
От: sasha Грузия  
Дата: 02.06.10 18:49
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Нет, вопрос был другой.


Хорошо, сформулирую вопрос еще раз, возможно первый был недостаточно четко сформулирован.

Процедура инсталляции продукта должна определить, установлена ли на данной машине коммерческая (любая, кроме Express) версия SQL Server 2008. Интересует именно платная версия, наличие или отсутствие версии Express не важно. Спрашиваю потому что поиски по форуму результатов не дали. В основном встречаются вопросы о наличии какой-либо версии сервера, меня же интересует наличие коммерческой версии.
Re[5]: Определеить наличие платной версии SQL Server 2008
От: Lloyd Россия  
Дата: 09.06.10 08:52
Оценка:
Здравствуйте, sasha, Вы писали:

S>В основном встречаются вопросы о наличии какой-либо версии сервера, меня же интересует наличие коммерческой версии.


Как отличить Express от не-Express тебе же вроде написали.
Re[6]: Определеить наличие платной версии SQL Server 2008
От: sasha Грузия  
Дата: 09.06.10 08:59
Оценка: :)
L>Как отличить Express от не-Express тебе же вроде написали.

Сделать это надо без соединения с сервером. Об этом вроде никто не писал.
Re[7]: Определеить наличие платной версии SQL Server 2008
От: Lloyd Россия  
Дата: 09.06.10 09:07
Оценка: +2
Здравствуйте, sasha, Вы писали:

L>>Как отличить Express от не-Express тебе же вроде написали.


S>Сделать это надо без соединения с сервером. Об этом вроде никто не писал.


Ну да, об этом даже ты не писал.
Re[8]: Определеить наличие платной версии SQL Server 2008
От: sasha Грузия  
Дата: 09.06.10 09:47
Оценка:
S>>Сделать это надо без соединения с сервером. Об этом вроде никто не писал.

L>Ну да, об этом даже ты не писал.


Вот, пишу. Проверку надо сделать без соединения с сервером. Есть идеи?
Re[9]: Определеить наличие платной версии SQL Server 2008
От: Lloyd Россия  
Дата: 09.06.10 10:06
Оценка:
Здравствуйте, sasha, Вы писали:

L>>Ну да, об этом даже ты не писал.


S>Вот, пишу. Проверку надо сделать без соединения с сервером. Есть идеи?


Нет, теперь нету.
Re: Определеить наличие платной версии SQL Server 2008
От: Protey Россия  
Дата: 09.06.10 12:25
Оценка:
Здравствуйте, sasha, Вы писали:

S>Всем привет. Возникла необходимость определения наличия на машине установленной платной версии SQL Server 2008 (любой, отличной от Express). Погуглил, но четкого ответа не нашел. Может кто сталкивался и может помочь?


SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\CurrentVersion
Re[2]: Определеить наличие платной версии SQL Server 2008
От: sasha Грузия  
Дата: 09.06.10 19:42
Оценка:
Здравствуйте, Protey, Вы писали:
P>SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\CurrentVersion

И что там записано? Разные значения для разных редакций одной и той же версии? Спрашиваю, потому что у меня в системе такого ключа нет, хотя сервер установлен.
Re[3]: Определеить наличие платной версии SQL Server 2008
От: DenisCh Россия  
Дата: 10.06.10 03:35
Оценка:
Здравствуйте, sasha, Вы писали:

P>>SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\CurrentVersion

S>И что там записано? Разные значения для разных редакций одной и той же версии? Спрашиваю, потому что у меня в системе такого ключа нет, хотя сервер установлен.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\InstalledInstances
У меня в этом параметре стоит SQLEXPRESS. И правда, у меня установлен 2008 експресс...
А вообще там мультистрока.
... << RSDN@Home 1.2.0 alpha rev. 741>>
Re[4]: Определеить наличие платной версии SQL Server 2008
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 10.06.10 04:49
Оценка: 1 (1) +1
Здравствуйте, DenisCh, Вы писали:

DC>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\InstalledInstances

DC>У меня в этом параметре стоит SQLEXPRESS. И правда, у меня установлен 2008 експресс...
DC>А вообще там мультистрока.

так это просто имена, которые даются при инсталляции, и SQLEXPRESS — это по умолчанию, а установить можно с любым
Re: Определеить наличие платной версии SQL Server 2008
От: Sergei MO Россия  
Дата: 10.06.10 08:26
Оценка:
Здравствуйте, sasha

Можно через WMI попробовать. Вот здесь есть пример для 2005-го сервера, для 2008-го должно быть аналогично.
Re[2]: Определеить наличие платной версии SQL Server 2008
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 10.06.10 09:29
Оценка:
Здравствуйте, Sergei MO, Вы писали:

SM>Можно через WMI попробовать. Вот здесь есть пример для 2005-го сервера, для 2008-го должно быть аналогично.


та же фигня, проверяется наличие инстанции с именем по-умолчанию
Как определить наличие платной версии SQL Server 2008
От: Sergei MO Россия  
Дата: 10.06.10 13:21
Оценка: 26 (1)
#Имя: FAQ.db.sqlserver.express.or.not.express
Здравствуйте, 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
Re[4]: Определеить наличие платной версии SQL Server 2008
От: Ziaw Россия  
Дата: 10.06.10 15:44
Оценка:
Здравствуйте, Sergei MO, Вы писали:

OE>>та же фигня, проверяется наличие инстанции с именем по-умолчанию


SM>Неправда, не та же. Ведь никто не мешает перебрать все экземпляры серверов, а не искать по заранее заданному имени. Вот код:


Конектиться нельзя по условию. Имхо надо менять условия, при таких надежно задача не решается.
Re[5]: Определеить наличие платной версии SQL Server 2008
От: Lloyd Россия  
Дата: 10.06.10 15:59
Оценка: +1
Здравствуйте, Ziaw, Вы писали:

Z>Конектиться нельзя по условию. Имхо надо менять условия, при таких надежно задача не решается.


По условию нельзя коннектиться к SqlServer-у, про WMI ничего сказано не было.
Re[4]: Определеить наличие платной версии SQL Server 2008
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 10.06.10 17:57
Оценка:
Здравствуйте, Sergei MO, Вы писали:

OE>>та же фигня, проверяется наличие инстанции с именем по-умолчанию

SM>Неправда, не та же. Ведь никто не мешает перебрать все экземпляры серверов, а не искать по заранее заданному имени. Вот код:

о! так вот этого же — "SELECT * FROM SqlService WHERE SQLServiceType = 1" там нету
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.