打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
SQL Server 2012实施与管理实战指南(笔记)——Ch4数据库连接组件
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;' 'DSNconn.Open 'Provider=sqloledb.1;server=127.0.0.1;Database=master;uid=sa;pwd=xxx;' 'oledbset 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.NET2.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
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
VB连接数据库方式汇总
ODBC ADO OLEDB三者区别
如何将 Excel 数据导入 SQL Server
ADO.NET入门教程(二)了解.NET数据提供程序
VB.NET连接数据库的几种方法
最优化ASP程序性能的方法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服