Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment vérifier si un client a installé le fournisseur SQLNCLI10 lors de la navigation ?

Frustrant, Microsoft ne semble pas donner de réponse sans ambiguïté sur la façon de tester si la bibliothèque cliente est présente. La recherche sur le Web et le reniflage du registre révèlent au moins les clés de registre suivantes :

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)

Ce billet de blog sur MSDN suggère que l'utilisation de clés de registre pour répondre à une question connexe (SQL Server Express est-il installé) est faux, faux, faux et vous devriez plutôt écrire 200 lignes de code WMI. Les approches WMI semblent tout aussi sans papiers et encore plus fragile pour moi.

Depuis Microsoft autorise la redistribution du package SQL Native Client , le meilleur choix consiste peut-être simplement à inclure le msi dans le programme d'installation de votre application et à l'exécuter, qu'il soit nécessaire ou non. Voir cette liste de systèmes d'exploitation pris en charge pour les différents pilotes qu'ils fournissent qui révèle qu'il existe également une version 10.5(!).

SQLNCLI est installé en parallèle aux pilotes basés sur MDAC, il devrait donc être sûr d'exécuter msiexec à ce sujet et laissez-le s'occuper des détails.