SQL Server 2012实施与管理实战指南(笔记)——Ch4数据库连接组件
4.数据库连接组件
访问数据库有多种不同的技术,包括ADO,ODBC,OLEDB,ADO.NET等这些都有一些共性。首先要建立连接(Connection),然后通过命令(Command)对数据库进行访问,最后把结果集放到dataset或者recordset上。
目录
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数据库连接组件的更多相关文章
- SQL Server 2012实施与管理实战指南(笔记)——Ch3Alwayson可用组
3.AlwaysOn可用组 Alwayson支持的,是一个可用性组,每个可用性组是包含了多个用户数据库的容器,可用性组内的数据库可以作为一个整体进行故障转移. AlwaysOn关键特性: 一.类似集群 ...
- SQL Server 2012实施与管理实战指南(笔记)——Ch5启动SQL Server服务和数据库
5.启动SQL Server服务和数据库 在数据库和服务启动过程中,经常会出现的问题: 1.SQL Server实例无法正常启动 2.系统数据库无法正常启动 3.网络配置失败 4.用户数据库无法启动 ...
- SQL Server 2012实施与管理实战指南(笔记)——Ch6连接的建立和问题排查
6.连接的建立和问题排查 会话的建立分成2个部分: 1.连接,即找到这个实例 2.认证,告诉sql server谁要连接 目录 6.连接的建立和问题排查 6.1协议选择和别名 6.1.1 服务器网络配 ...
- 《SQLSERVER2012实施与管理实战指南》前4章节笔记内容
<SQLSERVER2012实施与管理实战指南>前4章节笔记内容 <SQLSERVER2012实施与管理实战指南>的前面4章是<SQLSERVER企业级平台管理实践> ...
- SQL Server 2012 AlwaysOn集群配置指南
1. AlwaysOn介绍 AlwaysOn是SQL Server 2012提供的全新综合.灵活.高效经济的高可用性和灾难恢复解决方案.它整合了镜像和群集的功能,基于OS 故障转移群集(Windows ...
- SQL Server 2012故障转移的looksalive check和is alive check
什么是looksalive check和is alive check SQL Server故障转移集群是建立在windows集群服务上的一种热备的高可用方案.在集群运行过程中,windows集群服务定 ...
- SQL server 2012 阻塞分析查询
最近公司的数据库并发有点大,由于CPU不高.内存不高.硬盘正常.网络也正常等等,但系统还是会卡,所以就怀疑是数据库阻塞导致的,于是去查询资料,看书及经过用以下sql观查,经过几天对数据的分析找到原因并 ...
- SQL Server 2012 内存管理 (memory management) 改进
SQL Server 2012 的内存管理和以前的版本相比,有以下的一些变化. 一.内存分配器的变化 SQL Server 2012以前的版本,比如SQL Server 2008 R2等, 有sing ...
- 【转】SQL Server 2012 配置AlwaysOn(三)
转载自:http://www.cnblogs.com/lyhabc/p/4682986.html 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn) 第一篇http:/ ...
随机推荐
- CodeSmith连接Oracle
Win7上仅安装了Oracle32位客户端,此时CodeSmith无法连接Oracle数据库. 解决方法一:如果同一台电脑安装了Oracle64位数据库,这样CodeSmith可以连接数据库. 解决方 ...
- mysql分页查询详解
我们做的后端项目一般都会有admin管理端,当管理端将要展示数据的时候,就需要用到分页.所以分页的考查在面试中也相当多.在mysql中进行分页查询时,一般会使用limit查询,而且通常查询中都会使用o ...
- Bash中的任务(job)管理
本来不准备写这篇博客的,因为任务管理(job管理)非常非常常用,以至于觉得根本没有必要去写这样一个东西.但想了下,还是记录一下吧,也许有人会用到呢. 不知你是否碰到过这样的情况,当你兴致勃勃的打开VI ...
- C# Winform反序列化复杂json字符串
最近接的私单是一个CS项目,里面所有的操作都是通过调用API接口来进行的. 接口详细说明 协议:https 请求方式:post https://xx.xxx.net/app/clients 提交j ...
- 十大Intellij IDEA快捷键
转载:http://blog.csdn.net/dc_726/article/details/42784275 Intellij IDEA中有很多快捷键让人爱不释手,stackoverflow上也有一 ...
- java 编译时的初始化顺序
有的时候,java的初始化会对我的工作照成很大影响,所以简单介绍一下, 首先介绍简单的变量的初始化:在类的内部,变量定义的先后顺序决定了初始化的顺序,即使变量定义散布于方法定义之间,它也会先于构造器和 ...
- Muzli – 所有你需要的设计灵感都在这
曾几何时,三个家伙一起工作,他们分享各种令人振奋的资源链接.然后,其中一个人有一个想法.一个绝妙的主意,是否可以有一种方式来与他人分享这些链接?因此, Muzli 诞生了.所有你需要的设计灵感这里都有 ...
- Scroll Depth – 衡量页面滚动的 Google 分析插件
Scroll Depth 是一个小型的 Google Analytics(谷歌分析)插件,可以让你衡量用户在页面上滚动了多远.它可以监控 25%.50%.75% 和 100% 四个滚动点,并发送谷歌分 ...
- Sticker.js – 帮助你在网站中加入贴纸效果
Sticker.js 是一个很小的 JavaScript 库,它允许您在网页中创建漂亮的贴纸效果.没有依赖关系(不需要 jQuery),可以在大多数支持 CSS3 的主流浏览器工作.下面有简单的使用示 ...
- 让你忘记 Flash 的15款精彩 HTML5 游戏
HTML5 游戏开发是一个热门的话题,开发人员和设计人员最近经常谈论到.虽然不能迅速取代 Flash 的地位,但是 HTML5 凭借它的开放性和强大的编程能力,取代 Flash 是必然的趋势.你会看到 ...