Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie kann überprüft werden, ob auf einem Client beim Surfen der SQLNCLI10-Anbieter installiert ist?

Frustrierenderweise scheint Microsoft keine eindeutige Antwort darauf zu geben, wie man testen kann, ob die Client-Bibliothek vorhanden ist. Websuche und Registrierungs-Sniffing zeigen mindestens die folgenden Registrierungsschlüssel:

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)

Dieser Blogbeitrag bei MSDN schlägt vor, dass die Verwendung von Registrierungsschlüsseln zur Beantwortung einer verwandten Frage (ist SQL Server Express installiert) falsch, falsch, falsch ist und Sie stattdessen 200 Zeilen WMI-Code schreiben sollten. Die WMI-Ansätze scheinen ebenso undokumentiert und für mich noch zerbrechlicher.

Seit Microsoft erlaubt die Weitergabe des SQL Native Client-Pakets , ist es vielleicht die beste Wahl, einfach die MSI-Datei in das Installationsprogramm Ihrer Anwendung aufzunehmen und sie auszuführen, unabhängig davon, ob sie benötigt wird oder nicht. Siehe diese Liste der unterstützten Betriebssysteme für die verschiedenen Treiber, die sie bereitstellen was verrät, dass es auch eine Version 10.5(!) gibt.

SQLNCLI wird parallel zu MDAC-basierten Treibern installiert, daher sollte es sicher sein, msiexec auszuführen darauf und lassen Sie es sich um die Details kümmern.