Как проверить, установлен ли на клиенте поставщик SQLNCLI10 при просмотре?
У меня есть веб-сайт aC#, который позволяет клиенту напрямую подключаться к удаленной базе данных SQL Server со своего ПК в обход веб-сервера с помощью стороннего элемента управления ActiveX. Первоначально я использовал поставщика SQLOLEDB, и он работал нормально. Клиенты находятся во внутренней сети (с использованием компьютеров под управлением Windows и Internet Explorer), и веб-сайт не предназначен для доступа к общему Интернету.
Мне пришлось перейти от использования поставщика SQLOLEDB к поставщику SQLNCLI10, чтобы обслуживать новые типы данных в SQL Server 2008. Он работал на моем ПК, но не работал. Чего я не осознавал, так это того, что он работал, потому что поставщик SQLOLEDB является частью ОС Windows (MDAC/WDAC) и уже существует на клиентском ПК. Поставщик SQLNCLI10 включен как часть SQL Server 2008 и должен быть установлен отдельно на клиентском компьютере (потому что большинство из них не будет иметь установленный SQL Server, но я это сделаю).
Я могу предоставить им ссылку для загрузки автономного поставщика Microsoft SQL Server 2008 Native Client, но как я могу проверить, установлен ли он на них?
2 ответа
К сожалению, Microsoft, похоже, не дает однозначного ответа о том, как проверить наличие клиентской библиотеки. Поиск в сети и перехват регистраций обнаруживают, по крайней мере, следующие ключи реестра:
HLKM\SOFTWARE\Microsoft\SQLNCLI11 (key:InstalledVersion)
HLKM\SOFTWARE\Microsoft\SQLNCLI10 (key:InstalledVersion)
HKLM\SOFTWARE\Microsoft\Microsoft SQL Native Client\CurrentVersion (version 9, i presume?)
HLKM\SOFTWARE\Microsoft\Microsoft SQL Server Native Client 10.0\CurrentVersion (key:Version)
HLKM\SOFTWARE\Microsoft\Microsoft SQL Server Native Client 11.0\CurrentVersion (key:Version)
В этом сообщении в блоге MSDN говорится, что использование разделов реестра для ответа на связанный вопрос (установлен ли SQL Server Express) является неправильным, неправильным, неправильным, и вместо этого следует написать 200 строк кода WMI. Подходы WMI кажутся одинаково недокументированными и даже более хрупкими для меня.
Поскольку Microsoft позволяет распространять пакет собственного клиента SQL, возможно, лучшим выбором будет просто включить msi в установщик вашего приложения и запустить его независимо от того, нужен он или нет. См. Этот список поддерживаемых операционных систем для различных драйверов, которые они предоставляют, что показывает, что существует также версия 10.5 (!).
SQLNCLI устанавливается параллельно с драйверами на основе MDAC, поэтому он должен быть безопасным для запуска msiexec
об этом и пусть он позаботится о деталях.
Просто проверьте ключи реестра или файлы
- Реестр:
HKLM\SOFTWARE\Microsoft\Sqlncli10
- Файл: Проверьте для sqlncli10.dll в \System32
Или вы можете использовать WMI тоже
Возможно HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\SQLNCLI10\CurrentVersion
тоже, где вы можете сравнить версию, например, 10.0.1600.22 по вашей ссылке