zoukankan      html  css  js  c++  java
  • 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 TimeoutCommand Timeout. 4

    4.5 使用BID Tracing来跟踪应用程序的执行... 4

     

     

    4.1数据库应用编程方法概述和组件框架

    数据库编程方法有多种,WDACWindows Data Access Components)比较主流,主要包括ADOOLEDBODBC等。随着SQL Server引入新功能,客户端也需要发展没酒有了SNACSQL Server Native Client)编程方法来解决问题。

    编程方法

    简单介绍

    WDAC

    主要包括ADO,ODBC,OLEDB

    无需安装,不随着sql server变化而变化

    对新功能的支持不佳

    包含了70多个dll

    SNAC

    只有一个dll,同时包含ODBCOLEDB功能

    需要安装,随着SQL Server升级而变化

    ADO.NET

    基于.net framework

    借鉴了ado概念,但是具体实现和ADO不同

    4.1.1 WDAC编程

    WDAC之间也成为MDACMicrosoft Data Access Components

    4.1.1.1 ADO

    ADOWDAC中出于最高层,可以被VBVBSC++语言使用

    例:

    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,odbcoledb这些系统级的编程接口的汇接

    例:

    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自导的ProviderSQLOLEDBMSDASQLSQLOLEDB开发比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 40524055,3605可以把TDS数据发送到错误日志上。

    4.1.2 SNAC编程

    SQL Server Native Client是在sql server 2005之后引入的OLEDBODBC编程方法。只要是为了支持新的功能。

    4.1.3 ADO.NET编程

    主要用于.net framework开发,ADO.NET也可以调用WDAC或者SNAC来实现。

    4.2 连接字符串

    4.3 连接池

    连接池的存在是为了减少tcp连接的时间,从而提高性能。当以非连接池方式连接数据库时,profileaudit login事件的eventsubclassnonpooled,如果为连接池方式连接,那么eventsubclasspooled

    对于ado.net建议使用using来使用连接池,这样using块结束后会马上释放到连接池。

    4.4 Connection TimeoutCommand 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 TimeOutCommand 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_MACHINESoftwareMicrosoftBidInterfaceLoader, :Path值,如图4-10所示。

    注意a:如果是32位应用程序跑在64位系统上,则修改相应的HKLMSoftwareWow6432Node MicrosoftBidInterfaceLoader

    注意bPath前面有一个冒号。

    注意c:如果是跟踪ADO.NET 2.0,则注册表值为%SYSTEMROOT%Microsoft.NETFramework v2.0.50727ADONETDiag.dll,如果是跟踪WDACSNAC,则值为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

  • 相关阅读:
    发布说明
    Python批量读取人脸图片与数据互相转换
    Python图片与其矩阵数据互相转换
    在sklearn上读取人脸数据集保存图片到本地
    Python图片转换成矩阵,矩阵数据转换成图片
    lintcode :continuous subarray sum 连续子数组之和
    lintcode 中等题:digits counts 统计数字
    lintcode 中等题:Single number III 落单的数III
    lintcode 中等题:Singleton number II 落单的数 II
    lintcode 中等题:majority number III主元素III
  • 原文地址:https://www.cnblogs.com/Amaranthus/p/3703395.html
Copyright © 2011-2022 走看看