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

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介: 4.数据库连接组件 访问数据库有多种不同的技术,包括ADO,ODBC,OLEDB,ADO.NET等这些都有一些共性。首先要建立连接(Connection),然后通过命令(Command)对数据库进行访问,最后把结果集放到dataset或者recordset上。

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_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

相关实践学习
使用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
目录
相关文章
|
SQL NoSQL 关系型数据库
Postgre SQL进阶实战指南 | 开发者社区精选文章合集(四十一)
PostgreSQL是一个功能非常强大的、源代码开放的客户/服务器关系型数据库管理系统,同时也是一种特性非常齐全的对象-关系型数据库管理系统自由软件。揭秘PostgreSQL,深入了解,走进实战玩转PostgreSQL 。
Postgre SQL进阶实战指南 | 开发者社区精选文章合集(四十一)
|
SQL 网络协议 Windows
SQL Server 2012实施与管理实战指南(笔记)——Ch6连接的建立和问题排查
6.连接的建立和问题排查 会话的建立分成2个部分: 1.连接,即找到这个实例 2.认证,告诉sql server谁要连接 目录 6.连接的建立和问题排查... 1 6.1协议选择和别名.
994 0
|
SQL 监控 数据库
SQL Server 2012实施与管理实战指南(笔记)——Ch5启动SQL Server服务和数据库
5.启动SQL Server服务和数据库 在数据库和服务启动过程中,经常会出现的问题: 1.SQL Server实例无法正常启动 2.系统数据库无法正常启动 3.网络配置失败 4.用户数据库无法启动 5.
1209 0
|
SQL 监控 网络协议
SQL Server 2012实施与管理实战指南(笔记)——Ch3Alwayson可用组
3.AlwaysOn可用组 Alwayson支持的,是一个可用性组,每个可用性组是包含了多个用户数据库的容器,可用性组内的数据库可以作为一个整体进行故障转移。 AlwaysOn关键特性: 一、类似集群的特性 1.多个数据库可以一起迁移 2.提供一个虚拟服务器名,这个虚拟服务器名始终是当前的primary。
1132 0
|
4天前
|
关系型数据库 MySQL 数据库
ClickHouse(07)ClickHouse数据库引擎解析
ClickHouse支持多种数据库引擎,包括Atomic(默认)、MySQL、MaterializeMySQL、Lazy、PostgreSQL、MaterializedPostgreSQL。Atomic提供非阻塞的表操作和原子的表交换,有UUID标识和延迟删除功能。MySQL引擎允许与远程MySQL服务器交互,支持INSERT和SELECT,不支持RENAME操作。PostgreSQL引擎类似,可与远程PostgreSQL服务进行读写操作。SQLite引擎用于连接SQLite数据库。实验性引擎如MaterializeMySQL和MaterializedPostgreSQL用于实现实时数据同步。
30 5
|
7天前
|
消息中间件 Java Kafka
实时计算 Flink版产品使用合集之可以将数据写入 ClickHouse 数据库中吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
20 1
|
9天前
|
存储 安全 Java
Clickhouse数据库应用
Clickhouse数据库应用