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:/ ...
随机推荐
- LocalDB:微软的新生代轻量级数据库
什么是LocalDB 随着SQL Server 2012的发布,LocalDB跃入我们的视线,它可以被看做是SQL Server Express的轻量级版本.LocalDB专门为开发人员创建,它非常易 ...
- Ajax中传递Json格式的参数
$.ajax({ type: "post", url: baseUrl+"sys/login", dataType: "json", con ...
- Spring web应用最大的败笔
第一篇 介绍下IOC DI Spring主要是业务层框架,现在已经发展成为一个完整JavaEE开发框架,它的主要特点是IoC DI和AOP等概念的融合,强项在面向切面AOP.推出之初因为Ioc/AOP ...
- 配置WCF Test Client
用vs2010建立了一个wcf项目,通过F5直接运行那服务文件,就出现了一个”The dependent tool 'svcutil.exe' is not found“, , 之后想通过“tool- ...
- socket.io,系统api,
原文:http://www.cnblogs.com/xiezhengcai/p/3956401.html 1. 服务端 io.on('connection',function(socket)); 监听 ...
- Java实现多线程并发
import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util ...
- I am back
2012年11月13日,博客园最后一篇日志,三年半,i am back.
- Centos安装Memcached和(Nginx)Memcache扩展详细教程
下载memadmin,下载地址:http://www.junopen.com/memadmin/ 并在IIS新建站点. 测试地址:http://wap.yousawang.com/mem , 1.重启 ...
- 使用ruby搭建简易的http服务和sass环境
使用ruby搭建简易的http服务和sass环境 由于在通常的前端开发情况下,我们会有可能需要一个http服务,当然你可以选择自己写一个node的http服务,也比较简单,比如下面的node代码: v ...
- Linux下Oracle重启问题
一.切换成oracle用户 $ su - oracle 注意:不要写成“su oracle ”不然是没办法使用下面的命令的. 如下所示:将会报:command not found的错误 二.使用命令 ...