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:/ ...
随机推荐
- 【Java每日一题】20161117
package Nov2016; public class Ques1117 { public static void main(String[] args) { Sub sub = new Sub( ...
- 良好Web系统架构的几个因素
好像以前整理过一些思路. 这里的架构不是指纵向的架构,而是横向的架构方面. 三个词:挂件化.模块化.钩子化.
- java.lang.NoSuchMethodError: org.apache.xerces.impl.xs.XMLSchemaLoader.loadGrammar
今天在服务器部署的时候,发生了这个问题,明明在本机上使用的时候,没有发生错误,但是发布到服务器上的时候却发生了这个错误,百度了好久,发现遇到这个问题的人很多,但是却没有一个比较满意的答案,后来还是通过 ...
- Windows Embedded Standard 7 (WES7)系统定制遇到的问题(摄像头,喇叭,无线wifi)
由于项目需要,需要对WES7系统进行定制,删除所有Windows字样基本没有什么问题,主要遇到如下3个问题: 1. 摄像头在Application模板下不能正常使用,即使安装驱动: 2. Jabra喇 ...
- 2015暑假多校联合---Mahjong tree(树上DP 、深搜)
题目链接 http://acm.split.hdu.edu.cn/showproblem.php?pid=5379 Problem Description Little sun is an artis ...
- Java RSA 分段加解密
RSA加解密: 1024位的证书,加密时最大支持117个字节,解密时为128:2048位的证书,加密时最大支持245个字节,解密时为256. 加密时支持的最大字节数:证书位数/8 -11(比如:204 ...
- Hibernate(五)__hql语句
hql(hibernate query language)功能强大. 首先回忆下之前我们接触的对数据对象的操作: ①删除session.delete(对象) ②保存session.save(对象) ...
- Velocity – 另外一款加速的 jQuery 动画插件
Velocity 是一款 jQuery 插件,重新实现了 $.animate() 方法,提供更高的性能(比 CSS 动画还更快),同时包括一些新的功能,以改进动画工作流程.Velocity 除了包括所 ...
- (转)JavaScript二:JavaScript语言的基本语法要求
摘自:http://blog.csdn.net/erlian1992 要学习好JavaScript,首先我们要懂JavaScript语言的一些基本语法要求: 一,区分大小写 JavaScript语言区 ...
- about reg
var getR=function(str,reg){ return str.match(reg).join(""); } var a=getR("138888" ...