sql >> Databasteknik >  >> RDS >> Sqlserver

Hur kontrollerar jag om en klient har SQLNCLI10-leverantören installerad när du surfar?

Frustrerande nog verkar Microsoft inte ge ett entydigt svar på hur man testar om klientbiblioteket finns. Webbsökning och registersniffning avslöjar åtminstone följande registernycklar:

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)

Det här blogginlägget på MSDN föreslår att det är fel, fel, fel att använda registernycklar för att svara på en relaterad fråga (är SQL Server Express installerad) och du bör skriva 200 rader WMI-kod istället. WMI-metoderna verkar lika papperslös och ännu ömtåligare för mig.

Eftersom Microsoft tillåter att SQL Native Client-paketet omdistribueras , kanske det bästa valet är att helt enkelt inkludera msi i ditt programs installationsprogram och köra det oavsett om det behövs eller inte. Se denna lista över operativsystem som stöds för de olika drivrutiner de tillhandahåller vilket avslöjar att det också finns en version 10.5(!).

SQLNCLI installeras parallellt med MDAC-baserade drivrutiner, så det borde vara säkert att köra msiexec på detta och låt det ta hand om detaljerna.



  1. Identifiera django många-till-många länkar programmerat

  2. Anpassad aggregatfunktion (concat) i SQL Server

  3. MySQL LEFT JOIN med GROUP BY och WHERE IN (underfråga)

  4. Hitta en sträng genom att söka i alla tabeller i SQL Server