Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como verificar se um cliente possui o provedor SQLNCLI10 instalado ao navegar?


Frustrantemente, a Microsoft não parece dar uma resposta inequívoca sobre como testar se a biblioteca cliente está presente. A pesquisa na Web e a detecção de registro revelam pelo menos as seguintes chaves de registro:
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)

Esta postagem de blog no MSDN sugere que usar chaves de registro para responder a uma pergunta relacionada (o SQL Server Express está instalado) está errado, errado, errado e você deve escrever 200 linhas de código WMI. As abordagens WMI parecem igualmente indocumentado e ainda mais frágil para mim.

Como a Microsoft permite que o pacote SQL Native Client seja redistribuído , talvez a melhor escolha seja simplesmente incluir o msi no instalador do seu aplicativo e executá-lo, seja ele necessário ou não. Consulte esta lista de sistemas operacionais suportados para os vários drivers fornecidos o que revela que também existe uma versão 10.5(!).

SQLNCLI é instalado em paralelo com drivers baseados em MDAC, portanto, deve ser seguro executar msiexec sobre isso e deixá-lo cuidar dos detalhes.