【问题标题】:A Common ODBC Connection Strings works for SQL Server 2005+通用 ODBC 连接字符串适用于 SQL Server 2005+
【发布时间】:2019-12-05 13:31:53
【问题描述】:

我在VC2008中使用CDatabase通过ODBC连接SQL Server。

我想使用可用于 SQL Sever 2005 和所有更高版本的通用连接字符串。

我检查了https://www.connectionstrings.com/microsoft-sql-server-odbc-driver/,发现有许多不同类型的连接字符串。

我是否应该使用:

Driver={SQL Server};Server=myServerAddress;Database=myDataBase;Uid=myUsername;

或

Driver={SQL Native Client};Server=myServerAddress;Database=myDataBase; Uid=我的用户名;密码=我的密码; 密码=我的密码;

更新:

根据我的测试,使用 Driver={SQL Server} 或 Driver={SQL Server Native Client 10.0} 都可以连接到 SQL Server 2008。我猜前者适用于所有 SQL Server 版本,但后者只能适用于 SQL Server 2008。请确认我的猜测。

【问题讨论】:

  • 我希望可以使用所有 SQL 版本。但是,Driver={SQL Server} 使用的是 Windows 中已弃用的 ODBC 驱动程序,而现在较新的 ODBC 驱动程序是单独安装的。我建议你使用最新的ODBC Driver 17 for SQL Server 并指定`Driver={ODBC Driver 17 for SQL Server}。

标签: sql-server connection odbc


【解决方案1】:

两个驱动都会连接到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等新功能

它只支持Read Committed事务隔离。

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 代码的编写方式适用于任何数据库。

Suggested Reading

Common Connection :我认为不可能有任何公共连接。假设在我的系统中安装了SQL server native client 10 然后我知道我无法连接到Sql server 2016 + .SQL server native client 10 将在Sql Server 2016 及以下工作。

当然,我们可以通过编程制作动态连接字符串,接受驱动程序作为参数等。

要连接到更高版本,我将升级我的驱动程序并对连接字符串进行细微更改。或者如果您不想触摸代码,请使用DSN。

是的,我忘记了,Driver={SQL Server Native Client} 只能连接到Sql Srver 2005。如果您尝试连接到更高版本,则会抛出错误。

【讨论】:

  • 很抱歉,但根据我的测试,使用 Driver={SQL Server} 会起作用,但使用 Driver={SQL Native Client} 会失败(仅使用 Driver={SQL Server Native Client 10.0} 会起作用。我也用odbcad32查看驱动,只有两个驱动,即“SQL Server”和“SQL Server Native Client 10.0”。我用的是SQL Server 2008。
  • 谢谢。如果我想编写一个适用于所有版本的 SQL Server 2005 和更高版本的程序,那么我应该使用哪个驱动程序字符串?
  • @alancc ,首先说明您的前端应用程序是什么,例如 .net 或 c++。然后在 2-3 行中提及您的应用程序将执行的工作类型。
  • 我的前端应用程序是Visual C++ 2008。我的应用程序需要通过ODBC连接到SQL Server并创建一个数据库,然后创建一个表并添加一些记录。
  • “Common Connection”出现在标题和正文的最开始部分。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-08
相关资源
最近更新 更多