我在VC2008中使用CDatabase通过ODBC连接到SQL Server。
我想使用适用于 SQL Sever 2005 和所有更高版本的通用连接字符串。
我检查 https://www.connectionstrings.com/microsoft-sql-server-odbc-driver/,发现有许多不同类型的连接字符串。
我是否应该使用:
驱动程序={SQL Server};服务器=我的服务器地址;数据库=我的数据库;uid=我的用户名;
或
驱动程序={SQL 本机客户端};服务器=我的服务器地址;数据库=我的数据库; uid=我的用户名;Pwd=我的密码; Pwd=我的密码;
更新:
根据我的测试,使用 Driver={SQL Server}或 Driver={SQL Server Native Client 10.0} 都可以连接到 SQL Server 2008。我想前者适用于所有SQL Server版本,但后者仅适用于SQL Server 2008。请确认我的猜测。
这两个驱动程序都将连接到 Sql Server。但这两个驱动程序的用途不同。
Driver={SQL Server} :
它被称为Windows数据访问组件(WDAC(。
它不支持Sql server 2005+ like xml data type,Multiple active result sets (MARS), user-defined data types (UDT), query notifications
等新功能。
它仅支持已提交读取事务隔离。
Driver={SQL Native Client}
此驱动程序适用于需要利用 Sql Server 2005+ 新功能的应用程序。
它支持已提交读取事务和快照事务隔离级别。
System.Data.SQLClient
SQLClient 针对 .NET 和数据库 Sql server 2000+ 进行了优化。 它提供了最大的性能。
因此,如果您的应用程序是新的或现有的,请使用SQL Native Client
。它可以访问Sql Server 2005,2008等连接版本的所有功能。
ODBC
:当应用程序连接到多个数据库或预计数据库可能会更改时,请使用 ODBC。DAL 代码的编写方式适用于任何数据库。
推荐阅读
共同联系:我认为不可能有任何共同联系。假设在我的系统中安装SQL server native client 10
那么我知道我无法连接到Sql server 2016 +
。SQL server native client 10
适用于Sql Server 2016
及以下。
当然,通过编程,我们可以制作动态连接字符串,它将接受驱动程序作为参数等。
要连接到更高版本,我将hv升级我的驱动程序并对连接字符串进行微小更改。或者,如果您不想触摸代码,请使用DSN
.
是的,我忘了,Driver={SQL Server Native Client}
它只能连接到Sql Srver 2005
.如果您尝试连接到更高版本,那么它会抛出错误。