SQL Server 2012实施与管理实战指南摘要 - 第 4 章

4 数据库应用编程方法概述和组件架构 141 
4.1. WDACWindows Data Access Components编程 141 
4.1.1.   主要包括ADOODBCOLEDB
4.1.2.   无须安装,基于Windows平台,不随着SQL Server变化而变化
4.1.3.   对于SQL Server的一些新功能支持有所欠缺
4.1.4.   包含70多个DLL
4.2. SNACSQL Server Native Client编程 162 
4.2.1.   SQL Server Native Client是在SQL Server 2005后引入的OLEDBODBC编程方法。WDAC是发布在操作系统平台上的,比较稳定,但是随着SQL Server的新功能开发,WDAC对其支持不够,因此,就有了SQL Server Native ClientSQL Server Native Client是跟随SQL Server发布的,不过它的代码是从WDAC分离出去的,因此绝大部分的功能都是一样的。SQL Server Native Client支持绝大部分新功能
4.2.2.   只有一个DLL文件,同时包含ODBCOLEDB功能
4.2.3.   需要安装,会随着SQL Server版本升级而推出新的版本
4.3. ADO.NET编程 163
4.3.1.   WDACSNAC都是在native环境下的对数据库编程访问方法,随着.net framework平台的推出,微软也在其平台上提供了ADO.NETADO.NETADO是两个不同的产品,只是一些概念非常相似,故取名为ADO.NET
4.3.2.   ADO.NET包含如下几个重要的类。
·               Connection类:Connection帮助指明数据库服务器、数据库名、用户名和密码以及连接数据库所需要的其它参数。Connection对象会被Command对象使用,这样就能够知道是在哪个数据源上面执行命令。
·                Command类:成功建立数据库连接后,则可以用Command来执行查询、修改、插入、删除等命令。
·               DataReader类:许多数据操作要求只是读数据。我们可以在Command对象执行查询命令得到DataReader对象。从DataReader返回的数据都是快速的且只是向前的数据流,即我们只能按照一定的顺序从数据流中取出数据,不能对数据进行更改。
·               DataSet类:DataSet对象是数据在内存中的表示形式。它包含多个DataTable对象,DataTable包含行和列。
·               DataAdapter类:DataAdapter对象提供链接DataSet和数据源的桥梁。DataAdapter使用Command对象在数据源中执行SQL命令以向DataSet加载数据,并对DataSet中数据的更改协调回数据源。
4.4. 连接字符串 166 
连接后台数据库的行为主要是由连接字符串指定的。连接字符串有其一定的规范。除了指定要连接的服务器名,认证方法以外,还可以指定其它的一些连接特性,如DSN或使用哪个ODBC驱动等。ODBC的连接字符串和OLEDB连接字符串,以及ADO.NET的连接字符串规范也是不一样的。
4.5. 连接池 169 
所谓连接池,就是当连接关闭时,其物理连接还是继续保留,连接会放到一个池中,当下一个连接需要对数据库进行连接时,可从连接池中取得某一个连接继续使用。其目的是为了减少每次建立物理连接所需要的损耗,这对于性能要求很高的系统尤其重要。
4.6. connection timeoutcommand timeout 173
4.6.1.   每次对数据库连接时,我们有时候会碰到连接超时或者命令超时,这两个超时是不一样的。这些超时主要是通过连接字符串中的Connect TimeoutSqlCommand.CommandTimeout来进行控制。
4.6.2.   对于ADO/OLEDB连接超时可以通过连接字符串中的Connect Timeout来控制
4.6.3.   对于ODBC连接的超时不能通过连接字符串来控制,必须通过修改代码里的SQL_ATTR_LOGIN_ TIMEOUT属性来控制连接超时,默认值是15秒。
4.6.4.   CommandTimeout可在command对象对其进行修改
编程方式
Connection Timeout
Command Timeout
ADO.NET
默认值为15秒,可在连接字符串指定
默认值为30秒,可在command对象对其进行修改
ADO/OLEDB
默认值为15秒,可在连接字符串指定
默认值为30秒,可在command对象对其进行修改
ODBC
缺省值为15秒,可通过设定SQL_ATTR_LOGIN_TIMEOUT属性对其进行修改
默认值为0,也就是没有超时。可通过设定SQL_ATTR_QUERY_TIMEOUT对其进行修改

4.7. 使用bid tracing来跟踪检查应用程序的执行 181 
客户端程序执行时,有时会遇到一些难以调试的错误,如偶尔SQL Server连不上。有时一周出现一次,或者三四天出现一次。错误信息很简单,如:
[Microsoft][SQL Native Client] communication link failure 
或者碰到一些毫无头绪的错误信息:
Multiple-step operation generated errors. Check each status value.     
at ADODB.Field.set_Value(Object pvar)  
   at ADODB.InternalField.set_Value(Object value)  
碰到这些错误一般都是很难调试跟踪,对于这种问题似乎没有头绪。不过也不是没有办法,在很早以前,微软很多产品都有Built-In Diagnostics TracingBID跟踪)功能。所谓的BID跟踪功能其实很简单,就是在源代码的关键地方插入类似打印语句,平时不开启以免影响性能,只有在启用BID跟踪的时候,这些关键的信息会被打印下来。需要下载BID TRACE所需要的文件。
4.8. 小结 185