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

Откуда: Подмосковье
Сообщений: 229
Подскажите, как программно узнать, установлен ли на клиентской машине SQL NativeClient?
А также узанть какой - 9 или 10 ?

В смысле не коннектясь к серверу, а, например, через API операционки.
28 авг 09, 17:43    [7592393]     Ответить | Цитировать Сообщить модератору
 Re: узнать установлен ли SQL NativeClient  [new]
Lepsik
Member

Откуда: glubinka
Сообщений: 4255
ну а потом свой нужный ищешь

// get list of OLE DB provider - does not work for VS6
vector<wstring> ProviderList()
{
    vector<wstring> result;

        CEnumerator rs;
        HRESULT hrs = rs.Open();

        switch( hrs )
        {
        case CO_E_NOTINITIALIZED:
            // CoInitialize has not been called.
            return result;
        case S_OK:
            while( rs.MoveNext() == S_OK )
            {
                result.push_back(rs.m_szName);
            }
            break;
        default:
            //An error occurred during enumerating OLE DB providers.
            return result;
        }
    return result;
}
28 авг 09, 18:10    [7592541]     Ответить | Цитировать Сообщить модератору
 Re: узнать установлен ли SQL NativeClient  [new]
MustDie
Member

Откуда: Подмосковье
Сообщений: 229
Спасибо :)

Вот, кстати, в Делфи нашел готовую проц-ру - может кому пригодиться:
procedure GetProviderNames(Names: TStrings) - лежит в модуле ADODB.

на ее основе написал простую проверку:

// Проверить имя провайдера OLE на его наличие на данном компьютере
function CheckOLEProviderName(const ProviderName: string): boolean;
var
  Names: TStrings;
begin
  Result := false;
  Names := TStringList.Create;
  try
    GetProviderNames(Names);
    Result := (Names.IndexOf(ProviderName) <> -1)
  finally
    if Names<>nil
      then Names.Free;
  end;
end;

вызов:

  
if CheckOLEProviderName('SQLNCLI')
  then ShowMessage('Есть SQL Native Client!');


Вот только как определить 9 или 10? Хотя это не критично, но все-таки...
1 сен 09, 13:02    [7602688]     Ответить | Цитировать Сообщить модератору
 Re: узнать установлен ли SQL NativeClient  [new]
Senya_L
Member

Откуда: Москва
Сообщений: 5381
MustDie
Вот только как определить 9 или 10? Хотя это не критично, но все-таки...
Насколько я понимаю, они могут сосуществовать вместе. Клиентская библиотека для MSSQL2008 называется sqlncli10.dll. Только вчера смотрел. :)
1 сен 09, 13:16    [7602792]     Ответить | Цитировать Сообщить модератору
 Re: узнать установлен ли SQL NativeClient  [new]
Lepsik
Member

Откуда: glubinka
Сообщений: 4255
MustDie
Вот только как определить 9 или 10? Хотя это не критично, но все-таки...


SQLNCLI.1
SQLNCLI.10
1 сен 09, 22:36    [7605730]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить