如何在浏览时检查客户端是否安装了SQLNCLI10提供程序?

时间:2011-01-07 05:31:12

标签: asp.net sql-server sql-server-2008 oledb sqlncli

我有一个c#网站,允许客户端通过第三方ActiveX控件绕过Web服务器直接连接到PC上的远程SQL Server数据库。我最初使用 SQLOLEDB 提供程序,它工作正常。客户端位于内部网络中(使用Windows计算机和Internet Explorer),并且该网站不适用于普通互联网。

我不得不从使用 SQLOLEDB 提供程序升级到 SQLNCLI10 提供程序,以满足SQL Server 2008中的新数据类型。它可以在我的PC上运行,但是已经破解了生产。我没有意识到它是有效的,因为 SQLOLEDB 提供程序是Windows操作系统(MDAC / WDAC)的一部分,因此已存在于客户端的PC上。 SQLNCLI10 提供程序作为SQL Server 2008的一部分包含在内,必须单独安装在客户端计算机上(因为大多数提供程序不会安装SQL Server,但我会这样做)。

我可以提供一个链接供他们下载standalone Microsoft SQL Server 2008 Native Client provider,但我如何检查他们是否已经安装了它?

2 个答案:

答案 0 :(得分:6)

令人沮丧的是,微软似乎没有就如何测试客户端库是否存在提供明确的答案。 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)

This blog post at MSDN建议使用注册表项来回答相关问题(安装了SQL Server Express)是错误的,错误的,错误的,您应该编写200行WMI代码。 WMI approaches seem对我来说同样没有记载,甚至更加脆弱。

Microsoft allows the SQL Native Client package to be redistributed开始,也许最好的选择就是在应用程序的安装程序中包含msi,并运行它是否需要。请参阅this list of supported operating system for the various drivers they provide,其中显示还有版本10.5(!)。

SQLNCLI与基于MDAC的驱动程序并行安装,因此在此上运行msiexec应该是安全的,并让它处理细节。

答案 1 :(得分:4)

只需检查注册表项或文件

即可
  • 注册表:HKLM\SOFTWARE\Microsoft\Sqlncli10
  • 文件:检查\ System32
  • 中的sqlncli10.dll

或者您也可以使用WMI

也可以是HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\SQLNCLI10\CurrentVersion,您可以根据您的链接比较版本,例如10.0.1600.22

相关问题