Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come verificare se un client ha installato il provider SQLNCLI10 durante la navigazione?

In modo frustrante, Microsoft non sembra fornire una risposta univoca su come verificare se la libreria client è presente. La ricerca sul Web e lo sniffing del registro rivelano almeno le seguenti chiavi di 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)

Questo post del blog su MSDN suggerisce che l'utilizzo delle chiavi di registro per rispondere a una domanda correlata (è installato SQL Server Express) è sbagliato, sbagliato, sbagliato e dovresti invece scrivere 200 righe di codice WMI. Gli Approcci WMI sembrano ugualmente privo di documenti e ancora più fragile per me.

Poiché Microsoft consente la ridistribuzione del pacchetto SQL Native Client , forse la scelta migliore è semplicemente includere il file msi nel programma di installazione dell'applicazione ed eseguirlo indipendentemente dal fatto che sia necessario o meno. Consulta questo elenco di sistemi operativi supportati per i vari driver forniti che rivela che esiste anche una versione 10.5(!).

SQLNCLI è installato in parallelo ai driver basati su MDAC, quindi dovrebbe essere sicuro eseguire msiexec su questo e lascia che si occupi dei dettagli.