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)编程方法来解决问题。
4.1.1 WDAC编程WDAC之间也成为MDAC(Microsoft Data Access Components) 4.1.1.1 ADOADO在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 ProvidersWDAC自导的Provider有SQLOLEDB和MSDASQL,SQLOLEDB开发比ADO麻烦,ADO对方法方法进行了封装。所以比较简单。 4.1.1.4 ODBC Driver ManagerODBC上面有一层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 TimeoutConnection 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 |
|
来自: 新用户73286115 > 《待分类》