苛立たしいことに、Microsoftは、クライアントライブラリが存在するかどうかをテストする方法について明確な答えを出しているようには見えません。 Web検索とレジストリスニッフィングにより、少なくとも次のレジストリキーが明らかになります。
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)
MSDNのこのブログ投稿 レジストリキーを使用して関連する質問(SQL Server Expressがインストールされているか)に答えるのは間違っている、間違っている、間違っている、代わりに200行のWMIコードを記述する必要があることを示唆しています。 WMIアプローチは 同様に文書化されておらず、私にとってさらに脆弱です。
Microsoftでは、SQLNativeClientパッケージの再配布が許可されている 、おそらく最良の選択は、アプリケーションのインストーラーにmsiを含めて、必要かどうかに関係なく実行することです。 提供されているさまざまなドライバーでサポートされているオペレーティングシステムのリスト を参照してください。 これは、バージョン10.5(!)もあることを示しています。
SQLNCLIはMDACベースのドライバーと並行してインストールされるため、msiexec
を安全に実行できるはずです。 これについては、詳細を処理させてください。