De manera frustrante, Microsoft no parece dar una respuesta inequívoca sobre cómo probar si la biblioteca del cliente está presente. La búsqueda web y el rastreo de registro revelan al menos las siguientes claves 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 publicación de blog en MSDN sugiere que el uso de claves de registro para responder a una pregunta relacionada (si SQL Server Express está instalado) es incorrecto, incorrecto, incorrecto y que debe escribir 200 líneas de código WMI en su lugar. Los los enfoques WMI parecen igualmente indocumentados y aún más frágiles para mí.
Dado que Microsoft permite redistribuir el paquete SQL Native Client , quizás la mejor opción sea simplemente incluir el msi en el instalador de su aplicación y ejecutarlo ya sea que lo necesite o no. Consulte esta lista de sistemas operativos compatibles para los diversos controladores que proporcionan lo que revela que también hay una versión 10.5(!).
SQLNCLI se instala en paralelo con los controladores basados en MDAC, por lo que debería ser seguro ejecutar msiexec
en esto y deja que se ocupe de los detalles.