您现在的位置: 万盛学电脑网 >> 程序编程 >> 数据库 >> sql server教程 >> 正文

防止ADO连接SQLServer时的隐式连接

作者:佚名    责任编辑:admin    更新时间:2022-06-22

防止ADO连接sql server时的隐式连接

Report Date   2002/9chin a i t p oe er . co mNRaoA

Prepared by     郑            昀chin a i t p oe er . co mNRaoA

Article last modified on 2002-9chin a i t p oe er . co mNRaoA

The information in this article applies to:chin a i t p oe er . co mNRaoA

ü         Microsoft SQL Server 2000,7.0chin a i t p oe er . co mNRaoA

ü         Microsoft ADO 2.5chin a i t p oe er . co mNRaoA

问题陈述:

数据库服务器:Microsoft SQL Server 2000以及7.0;chin a i t p oe er . co mNRaoA

数据库服务器补丁:Microsoft SQL Server 2000 ServicePack1;chin a i t p oe er . co mNRaoA

ADO名称:Microsoft Data Access - ActiveX Data Objects 2.5 Type Librarychin a i t p oe er . co mNRaoA

ADO版本:2.61.7326.0chin a i t p oe er . co mNRaoA

 chin a i t p oe er . co mNRaoA

执行下面的VB代码时,我们的开发人员产生了疑问:chin a i t p oe er . co mNRaoA

 cnn.Open "Provider=SQLOLEDB.1;chin a i t p oe er . co mNRaoA

Persist Security Info=False;User ID=sa;chin a i t p oe er . co mNRaoA

Initial Catalog=freemail;Data Source=svr;ConnectionTimeout=10", "", "", -1
       sql = "select * from users"chin a i t p oe er . co mNRaoA

    Set rs = cnn.Execute(sql)
      Set rs2 = cnn.Execute(sql)
      Set rs3 = cnn.Execute(sql)

chin a i t p oe er . co mNRaoA

执行这段代码时,在SQL Server Profiler中看到,每个sql语句执行之前都会有一个Audit Login事件。而Audit Login事件的解释是:“收集自跟踪启动后发生的所有新的连接事件,例如客户端请求连接到运行 Microsoft® SQL Server™ 实例的服务器。也就是说,用Connection对象连接SQL Server之后,每次执行sql语句时仍然会重新建立一次连接,即使用的是同一个Connection?!chin a i t p oe er . co mNRaoA

建立连接的事件探查记录(按时间顺序)为:chin a i t p oe er . co mNRaoA

 chin a i t p oe er . co mNRaoA

EventClass chin a i t p oe er . co mNRaoA

Text Datachin a i t p oe er . co mNRaoA

TraceStartchin a i t p oe er . co mNRaoA

 chin a i t p oe er . co mNRaoA

Audit Loginchin a i t p oe er . co mNRaoA

(第一次连接)chin a i t p oe er . co mNRaoA

-- network protocol: LPCchin a i t p oe er . co mNRaoA

set quoted_identifier onchin a i t p oe er . co mNRaoA

set implicit_transactions offchin a i t p oe er . co mNRaoA

set cursor_close_on_commit offchin a i t p oe er . co mNRaoA