我们有一个SQL Server 2012数据库(在远程服务器上),我们通过Excel加载项从三台不同的客户端计算机连接。我们使用的原始连接字符串适用于两台计算机。但是,对于第三台计算机,由于某种原因,我们必须使用不同的连接字符串到同一个确切的数据库。
前两台计算机在Windows 7 Pro上运行,64位,我们使用的原始连接字符串是:
Provider=SQLNCLI11;Server={myserver};Database={mydb}; ...
第三台计算机在Windows 7企业版上运行,64位,我们必须使用的原始连接字符串是:
Provider=SQLOLEDB;DataSource={myds};InitialCatalog={mydb}; ...
为什么我必须将两个不同的连接字符串用于同一个数据库?除了数据库本身的类型,还有什么决定使用哪个连接字符串和提供程序?是否与每台 客户端 计算机上安装的驱动程序有关?如果是这样,我们如何解释?或者......是别的吗?
非常感谢任何帮助和建议!
答案 0 :(得分:0)
Provider基本上告诉客户端计算机在连接到数据库服务器时使用哪个网络/连接库。要使用提供程序,您必须安装它。您将使用提供程序来提供性能,功能和支持。例如,SQLNCLI11附带SQL Server 2012.如果客户端计算机没有安装SQL 2012客户端库,则它们不能使用该提供程序,也不能使用它支持的客户端连接功能,例如AlwaysOn(应用程序意图只读等)
SQLOLEDB是老派的东西,我不知道现在是否默认安装它。如果您拥有该功能,则无法访问连接字符串中的上述功能或任何其他特定的SQL相关客户端连接功能(如镜像的failoverpartner参数)。