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,如需转载请自行联系原作者


相关文章
|
2月前
|
SQL 人工智能 Linux
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
342 5
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
|
1月前
|
SQL 存储 监控
SQL日志优化策略:提升数据库日志记录效率
通过以上方法结合起来运行调整方案, 可以显著地提升SQL环境下面向各种搜索引擎服务平台所需要满足标准条件下之数据库登记作业流程综合表现; 同时还能确保系统稳健运行并满越用户体验预期目标.
175 6
|
2月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
|
2月前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。
|
2月前
|
SQL Oracle 关系型数据库
Oracle数据库创建表空间和索引的SQL语法示例
以上SQL语法提供了一种标准方式去组织Oracle数据库内部结构,并且通过合理使用可以显著改善查询速度及整体性能。需要注意,在实际应用过程当中应该根据具体业务需求、系统资源状况以及预期目标去合理规划并调整参数设置以达到最佳效果。
275 8
|
3月前
|
SQL 人工智能 Java
用 LangChain4j+Ollama 打造 Text-to-SQL AI Agent,数据库想问就问
本文介绍了如何利用AI技术简化SQL查询操作,让不懂技术的用户也能轻松从数据库中获取信息。通过本地部署PostgreSQL数据库和Ollama模型,结合Java代码,实现将自然语言问题自动转换为SQL查询,并将结果以易懂的方式呈现。整个流程简单直观,适合初学者动手实践,同时也展示了AI在数据查询中的潜力与局限。
402 8
|
2月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
|
2月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
125 3
|
2月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
3月前
|
存储 运维 关系型数据库
从MySQL到云数据库,数据库迁移真的有必要吗?
本文探讨了企业在业务增长背景下,是否应从 MySQL 迁移至云数据库的决策问题。分析了 MySQL 的优势与瓶颈,对比了云数据库在存储计算分离、自动化运维、多负载支持等方面的优势,并提出判断迁移必要性的五个关键问题及实施路径,帮助企业理性决策并落地迁移方案。