Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как определить версию клиента MS SQL?  [new]
Mih_dim
Member

Откуда:
Сообщений: 145
Здравствуйте!
Возникла такая проблема:
Есть куча заказчиков с серверами MSSQL 2005,2008,2008 R2 (у каждого своя версия).
Соответственно на клиентской машине установлен клиент или 2005 или 2008.
Программа наша одна. Нужно определить исходя из машины клиента через какого SQL клиента подключаться (через 2005 или 2008).
Сейчас сделано так:
Сначала Ищется в реестре HKEY_CLASSES_ROOT\SQLNCLI10,
Если нет то ищется HKEY_CLASSES_ROOT\SQLNCLI,
если нет то HKEY_CLASSES_ROOT\SQLOLEDB
И потом происходит подключение.

вроде все ок, но:
На win XP или Server 2008 (на win 7 все работает), где установлен клиент sQL 2008 не работает.
Находит SQLNCLI10 все ок. Подключается. Выполняет запрос на select.
А при попытке выполнить exec процедуры через ADO вылетает ошибка. Ну как ошибка, просто
если смотреть через профайлер имя процедуры пустое:
set ftmonly on
exec
set ftmonly off

Если подставляешь SQLNCLI.1 (тоже в реестре есть), то все работает.
Причем на другой машине тоже самое но в точности наоборот: на SQLNCLI10 работает, а на SQLNCLI.1 нет.

Помогите! Может подскажите как точно определять клиента SQL на машине пользователя!!!!!!
10 май 11, 15:31    [10630026]     Ответить | Цитировать Сообщить модератору
 Re: Как определить версию клиента MS SQL?  [new]
iljy
Member

Откуда:
Сообщений: 8711
Mih_dim,

если вам все равно, какой клиент,- используйте SQLOLEDB. Если не все равно - ставьте нужный вместе в программой. Если уж очень хочется поизвращаться - используйте OLEDB Enumerator для определения существующих провайдеров.
10 май 11, 15:44    [10630161]     Ответить | Цитировать Сообщить модератору
 Re: Как определить версию клиента MS SQL?  [new]
Mih_dim
Member

Откуда:
Сообщений: 145
iljy
Mih_dim,

если вам все равно, какой клиент,- используйте SQLOLEDB. Если не все равно - ставьте нужный вместе в программой. Если уж очень хочется поизвращаться - используйте OLEDB Enumerator для определения существующих провайдеров.


Нам не все равно: SQLOLEDB - медленнее
А можно поподробнее про OLEDB Enumerator (хочеться поизвращаться :)).
10 май 11, 16:52    [10630681]     Ответить | Цитировать Сообщить модератору
 Re: Как определить версию клиента MS SQL?  [new]
iljy
Member

Откуда:
Сообщений: 8711
Mih_dim,

да пожалуйста

вот например.
http://www.rsdn.ru/forum/db/3785895.flat.aspx
10 май 11, 17:36    [10630996]     Ответить | Цитировать Сообщить модератору
 Re: Как определить версию клиента MS SQL?  [new]
Eduard Minasyan
Member

Откуда:
Сообщений: 119
SELECT @@VERSION
10 май 11, 17:49    [10631094]     Ответить | Цитировать Сообщить модератору
 Re: Как определить версию клиента MS SQL?  [new]
Mih_dim
Member

Откуда:
Сообщений: 145
iljy
Mih_dim,

да пожалуйста

вот например.
http://www.rsdn.ru/forum/db/3785895.flat.aspx


Спасибо, попробуем!
23 май 11, 12:28    [10693512]     Ответить | Цитировать Сообщить модератору
 Re: Как определить версию клиента MS SQL?  [new]
Mih_dim
Member

Откуда:
Сообщений: 145
Eduard Minasyan
SELECT @@VERSION


Не версию сервера, а версию клиента у пользователя на машине.
23 май 11, 12:29    [10693519]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить