4.数据库连接组件

访问数据库有多种不同的技术,包括ADO,ODBC,OLEDB,ADO.NET等这些都有一些共性。首先要建立连接(Connection),然后通过命令(Command)对数据库进行访问,最后把结果集放到dataset或者recordset上。

目录

4.数据库连接组件... 1

4.1数据库应用编程方法概述和组件框架... 1

4.1.1 WDAC编程... 1

4.1.2 SNAC编程... 3

4.1.3 ADO.NET编程... 3

4.2 连接字符串... 4

4.3 连接池... 4

4.4 Connection Timeout和Command Timeout. 4

4.5 使用BID Tracing来跟踪应用程序的执行... 4

4.1数据库应用编程方法概述和组件框架

数据库编程方法有多种,WDAC(Windows Data Access Components)比较主流,主要包括ADO,OLEDB,ODBC等。随着SQL Server引入新功能,客户端也需要发展没酒有了SNAC(SQL Server Native Client)编程方法来解决问题。

编程方法

简单介绍

WDAC

主要包括ADO,ODBC,OLEDB

无需安装,不随着sql server变化而变化

对新功能的支持不佳

包含了70多个dll

SNAC

只有一个dll,同时包含ODBC和OLEDB功能

需要安装,随着SQL Server升级而变化

ADO.NET

基于.net framework

借鉴了ado概念,但是具体实现和ADO不同

4.1.1 WDAC编程

WDAC之间也成为MDAC(Microsoft Data Access Components)

4.1.1.1 ADO

ADO在WDAC中出于最高层,可以被VB,VBS,C++语言使用

例:

set conn = CreateObject("ADODB.CONNECTION")

set rs=CreateObject("ADODB.Recordset")

set cmd=CreateObject("ADODB.Command")

conn.open "Provider=sqloledb;Server=xxx;Trusted_Connection=Yes"

当然这里的provider也可以使用MSDASQL

ADO可以说是对dsn,odbc,oledb这些系统级的编程接口的汇接。

例:

set conn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.RECORDSET")
'conn.Open "Driver=SQL Server;server=127.0.0.1;Database=master;uid=sa;pwd=xxx;" 'ODBC
'conn.Open "DSN=local;uid=sa;pwd=xxx;" 'DSN
conn.Open "Provider=sqloledb.1;server=127.0.0.1;Database=master;uid=sa;pwd=xxx;" 'oledb
set rs = conn.Execute("select servername=@@servername")
MsgBox( rs("servername"))

4.1.1.2 OLEDB Core Services

主要提供一些规范检查和连接池的支持

4.1.1.3 OLEDB Providers

WDAC自导的Provider有SQLOLEDB和MSDASQL,SQLOLEDB开发比ADO麻烦,ADO对方法方法进行了封装。所以比较简单。

4.1.1.4 ODBC Driver Manager

ODBC上面有一层ODBC Driver Manager 主要是保证不同驱动支持的ODBC API的统一。

4.1.1.5 ODBC Dirvers

可以在管理工具的数据源(ODBC)的驱动上查看

光WDAC都有很多种访问数据的方法,但是最终都是使用TDS协议和数据库进行交互。查看TDS协议可以使用:

1.可以用网络监控工具来监控

2.开启trace flag 4052,4055,3605可以把TDS数据发送到错误日志上。

4.1.2 SNAC编程

SQL Server Native Client是在sql server 2005之后引入的OLEDB,ODBC编程方法。只要是为了支持新的功能。

4.1.3 ADO.NET编程

主要用于.net framework开发,ADO.NET也可以调用WDAC或者SNAC来实现。

4.2 连接字符串

4.3 连接池

连接池的存在是为了减少tcp连接的时间,从而提高性能。当以非连接池方式连接数据库时,profile中audit login事件的eventsubclass为nonpooled,如果为连接池方式连接,那么eventsubclass为pooled。

对于ado.net建议使用using来使用连接池,这样using块结束后会马上释放到连接池。

4.4 Connection Timeout和Command Timeout

Connection Timeout是连接超时

Command Timeout是命令超时

超时主要有以下几方面:

1.从连接池获取一个连接超时

2.创建一个新的连接超时

3.发送一个命令(Command)到数据库超时

4.使用带有context connection=true的属性连接发送命令(Command)到数据库超时。

5.当不是显示的发送命令(implicitly)到数据库超时。

6.执行异步命令时超时

7.从服务端获取记录时超时

8.使用bulk copy时超时。

上面8个,最有前面2个是属于 Connection Timeout,其他都是Command Timeout。

Connection TimeOut和Command Timeout报错的命令也不同。

对于ado.net默认超时时间都是15s,如果为0表示无限等待。

4.5 使用BID Tracing来跟踪应用程序的执行

所谓的BID跟踪是在源代码关键位置的信息打印,平时会影响性能。所以没有开启。

步骤:

1. 下载BID TRACE所需要的文件

http://download.microsoft.com/download/e/d/3/ed3cdde1-0ffc-4abc-8bc2-d62f206d1a3d/Data_Access_Tracing_2008.exe,解压缩后,文件目录结构如图4-9所示。

2. 修改注册表HKEY_LOCAL_MACHINE\Software\Microsoft\BidInterface\Loader, 加:Path值,如图4-10所示。

注意a:如果是32位应用程序跑在64位系统上,则修改相应的HKLM\Software\Wow6432Node\
Microsoft\BidInterface\Loader。

注意b:Path前面有一个冒号。

注意c:如果是跟踪ADO.NET
2.0,则注册表值为%SYSTEMROOT%\Microsoft.NET\Framework\
v2.0.50727\ADONETDiag.dll,如果是跟踪WDAC或SNAC,则值为msdadiag.dll。

3. 打开一个命令窗口,编译MOF文件。

到MOF_Files文件夹下面,执行命令:mofcomp all.mof。

4. 重新启动应用程序。

在监控之前,我们需要重新启动应用程序,否则抓不到BID Trace信息。

5.在Control_GUID_Files文件夹下面,选定要监控的模块,如ctrl.guid.mdac,再对该文件进行修改,只选择要监控的DLL。

6. 开始监控。

Logman start MyTrace -pf ctrl.guid.mdac -ct perf -o out.etl -ets

参考:

http://book.51cto.com/art/201303/386758.htm

http://blog.csdn.net/ithomer/article/details/6624684

SQL Server 2012实施与管理实战指南(笔记)——Ch4数据库连接组件的更多相关文章

  1. SQL Server 2012实施与管理实战指南(笔记)——Ch3Alwayson可用组

    3.AlwaysOn可用组 Alwayson支持的,是一个可用性组,每个可用性组是包含了多个用户数据库的容器,可用性组内的数据库可以作为一个整体进行故障转移. AlwaysOn关键特性: 一.类似集群 ...

  2. SQL Server 2012实施与管理实战指南(笔记)——Ch5启动SQL Server服务和数据库

    5.启动SQL Server服务和数据库 在数据库和服务启动过程中,经常会出现的问题: 1.SQL Server实例无法正常启动 2.系统数据库无法正常启动 3.网络配置失败 4.用户数据库无法启动 ...

  3. SQL Server 2012实施与管理实战指南(笔记)——Ch6连接的建立和问题排查

    6.连接的建立和问题排查 会话的建立分成2个部分: 1.连接,即找到这个实例 2.认证,告诉sql server谁要连接 目录 6.连接的建立和问题排查 6.1协议选择和别名 6.1.1 服务器网络配 ...

  4. 《SQLSERVER2012实施与管理实战指南》前4章节笔记内容

    <SQLSERVER2012实施与管理实战指南>前4章节笔记内容 <SQLSERVER2012实施与管理实战指南>的前面4章是<SQLSERVER企业级平台管理实践> ...

  5. SQL Server 2012 AlwaysOn集群配置指南

    1. AlwaysOn介绍 AlwaysOn是SQL Server 2012提供的全新综合.灵活.高效经济的高可用性和灾难恢复解决方案.它整合了镜像和群集的功能,基于OS 故障转移群集(Windows ...

  6. SQL Server 2012故障转移的looksalive check和is alive check

    什么是looksalive check和is alive check SQL Server故障转移集群是建立在windows集群服务上的一种热备的高可用方案.在集群运行过程中,windows集群服务定 ...

  7. SQL server 2012 阻塞分析查询

    最近公司的数据库并发有点大,由于CPU不高.内存不高.硬盘正常.网络也正常等等,但系统还是会卡,所以就怀疑是数据库阻塞导致的,于是去查询资料,看书及经过用以下sql观查,经过几天对数据的分析找到原因并 ...

  8. SQL Server 2012 内存管理 (memory management) 改进

    SQL Server 2012 的内存管理和以前的版本相比,有以下的一些变化. 一.内存分配器的变化 SQL Server 2012以前的版本,比如SQL Server 2008 R2等, 有sing ...

  9. 【转】SQL Server 2012 配置AlwaysOn(三)

    转载自:http://www.cnblogs.com/lyhabc/p/4682986.html 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn) 第一篇http:/ ...

随机推荐

  1. 【Java每日一题】20161117

    package Nov2016; public class Ques1117 { public static void main(String[] args) { Sub sub = new Sub( ...

  2. 良好Web系统架构的几个因素

    好像以前整理过一些思路. 这里的架构不是指纵向的架构,而是横向的架构方面. 三个词:挂件化.模块化.钩子化.

  3. java.lang.NoSuchMethodError: org.apache.xerces.impl.xs.XMLSchemaLoader.loadGrammar

    今天在服务器部署的时候,发生了这个问题,明明在本机上使用的时候,没有发生错误,但是发布到服务器上的时候却发生了这个错误,百度了好久,发现遇到这个问题的人很多,但是却没有一个比较满意的答案,后来还是通过 ...

  4. Windows Embedded Standard 7 (WES7)系统定制遇到的问题(摄像头,喇叭,无线wifi)

    由于项目需要,需要对WES7系统进行定制,删除所有Windows字样基本没有什么问题,主要遇到如下3个问题: 1. 摄像头在Application模板下不能正常使用,即使安装驱动: 2. Jabra喇 ...

  5. 2015暑假多校联合---Mahjong tree(树上DP 、深搜)

    题目链接 http://acm.split.hdu.edu.cn/showproblem.php?pid=5379 Problem Description Little sun is an artis ...

  6. Java RSA 分段加解密

    RSA加解密: 1024位的证书,加密时最大支持117个字节,解密时为128:2048位的证书,加密时最大支持245个字节,解密时为256. 加密时支持的最大字节数:证书位数/8 -11(比如:204 ...

  7. Hibernate(五)__hql语句

    hql(hibernate query language)功能强大. 首先回忆下之前我们接触的对数据对象的操作: ①删除session.delete(对象) ②保存session.save(对象)   ...

  8. Velocity – 另外一款加速的 jQuery 动画插件

    Velocity 是一款 jQuery 插件,重新实现了 $.animate() 方法,提供更高的性能(比 CSS 动画还更快),同时包括一些新的功能,以改进动画工作流程.Velocity 除了包括所 ...

  9. (转)JavaScript二:JavaScript语言的基本语法要求

    摘自:http://blog.csdn.net/erlian1992 要学习好JavaScript,首先我们要懂JavaScript语言的一些基本语法要求: 一,区分大小写 JavaScript语言区 ...

  10. about reg

    var getR=function(str,reg){ return str.match(reg).join(""); } var a=getR("138888" ...