SQL Server 2012实施与管理实战指南(笔记)——Ch4数据库连接组件

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介:

4.数据库连接组件

访问数据库有多种不同的技术,包括ADO,ODBC,OLEDB,ADO.NET等这些都有一些共性。首先要建立连接(Connection),然后通过命令(Command)对数据库进行访问,最后把结果集放到dataset或者recordset上。

目录

4.数据库连接组件

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

4.1.1 WDAC编程

4.1.2 SNAC编程

4.1.3 ADO.NET编程

4.2 连接字符串

4.3 连接池

4.4 Connection TimeoutCommand Timeout

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

 

 

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_MACHINE\Software\Microsoft\BidInterface\Loader, :Path值,如图4-10所示。

注意a:如果是32位应用程序跑在64位系统上,则修改相应的HKLM\Software\Wow6432Node\ Microsoft\BidInterface\Loader

注意bPath前面有一个冒号。

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





    本文转自 Fanr_Zh 博客园博客,原文链接:http://www.cnblogs.com/Amaranthus/p/3703395.html,如需转载请自行联系原作者


相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
7天前
|
SQL 人工智能 算法
【SQL server】玩转SQL server数据库:第二章 关系数据库
【SQL server】玩转SQL server数据库:第二章 关系数据库
47 10
|
7天前
|
SQL 算法 数据库
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
64 6
|
4天前
|
SQL 数据库
数据库SQL语言实战(二)
数据库SQL语言实战(二)
|
8天前
|
SQL 存储 数据挖掘
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
服务器数据恢复环境: 一台安装windows server操作系统的服务器。一组由8块硬盘组建的RAID5,划分LUN供这台服务器使用。 在windows服务器内装有SqlServer数据库。存储空间LUN划分了两个逻辑分区。 服务器故障&初检: 由于未知原因,Sql Server数据库文件丢失,丢失数据涉及到3个库,表的数量有3000左右。数据库文件丢失原因还没有查清楚,也不能确定数据存储位置。 数据库文件丢失后服务器仍处于开机状态,所幸没有大量数据写入。 将raid5中所有磁盘编号后取出,经过硬件工程师检测,没有发现明显的硬件故障。以只读方式将所有磁盘进行扇区级的全盘镜像,镜像完成后将所
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
|
12天前
|
SQL 安全 Java
SQL server 2017安装教程
SQL server 2017安装教程
14 1
|
15天前
|
数据库 SQL 索引
什么是数据库 SQL Execution Plan
什么是数据库 SQL Execution Plan
10 0
|
1月前
|
SQL 数据库 数据安全/隐私保护
Sql Server数据库Sa密码如何修改
Sql Server数据库Sa密码如何修改
|
2月前
|
SQL 算法 数据库
【数据库SQL server】关系数据库标准语言SQL之数据查询
【数据库SQL server】关系数据库标准语言SQL之数据查询
95 0
|
2月前
|
SQL 算法 数据库
【数据库SQL server】关系数据库标准语言SQL之视图
【数据库SQL server】关系数据库标准语言SQL之视图
76 0
|
17天前
|
SQL
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
15 0