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

2024-05-26

我有一个 C# 网站,允许客户端从其 PC 直接连接到远程 SQL Server 数据库,通过使用第 3 方 ActiveX 控件绕过 Web 服务器。我最初使用的是SQLOLEDB提供商并且运行良好。客户端位于内部网络中(使用 Windows 计算机和 Internet Explorer),并且该网站不适合暴露在一般互联网上。

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

我可以提供一个链接供他们下载来自,但我如何检查他们是否已经安装了它?


令人沮丧的是,对于如何测试客户端库是否存在,微软似乎没有给出明确的答案。网络搜索和注册表嗅探至少揭示了以下注册表项:

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 上的这篇博文 http://blogs.msdn.com/b/sqlexpress/archive/2006/07/29/faq-detecting-sql-server-2005-using-wmi.aspx建议使用注册表项来回答相关问题(是否安装了 SQL Server Express)是错误的、错误的、错误的,您应该编写 200 行 WMI 代码。这WMI 方法似乎 http://social.msdn.microsoft.com/Forums/en-US/sqlgetstarted/thread/a182caa6-2fd7-498c-afb7-47c49fcd6c11同样没有证件,对我来说甚至更加脆弱。

Since Microsoft 允许重新分发 SQL Native Client 包 http://technet.microsoft.com/en-us/library/ms131321,也许最好的选择就是简单地将 msi 包含在应用程序的安装程序中并运行它,无论是否需要。看他们提供的各种驱动程序支持的操作系统列表 http://technet.microsoft.com/en-us/library/cc280356这表明还有一个版本 10.5(!)。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐