PRB: SQL Server ODBC Driver with ADO Spawns Second Connection (191085)



The information in this article applies to:

  • ActiveX Data Objects (ADO) 1.5
  • ActiveX Data Objects (ADO) 2.0
  • ActiveX Data Objects (ADO) 2.1 SP2
  • ActiveX Data Objects (ADO) 2.5
  • ActiveX Data Objects (ADO) 2.6
  • ActiveX Data Objects (ADO) 2.7
  • Microsoft Visual Basic Professional Edition for Windows 5.0
  • Microsoft Visual Basic Professional Edition for Windows 6.0
  • Microsoft Visual Basic Enterprise Edition for Windows 5.0
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0

This article was previously published under Q191085

SYMPTOMS

The first row-returning query that you run on an ADO connection to SQL Server 6.5 using the SQL Server ODBC driver causes the following query to be run on SQL Server:
   select USER_NAME() select usertype,type,name from systypes where
   usertype<=100
				

CAUSE

The OLE DB provider for ODBC drivers requests information from SQL Server to understand how to manage queries and results.

STATUS

This behavior is by design.

MORE INFORMATION

If your initial row-returning query uses a client-side recordset or a server-side firehose cursor, this behavior results in a temporary connection to your SQL Server which will be closed as soon as the query has completed.

Steps to Reproduce Behavior

Use SQL Server's SQL Trace utility to see that the following code establishes a second connection to the database. Modify the connection string to connect to your SQL Server database as follows:

Note You must change UID=<username> and PWD=<strong password> to the correct values before you run this code. Make sure that UID has the appropriate permissions to perform this operation on the database.
   Dim cnPubs As New ADODB.Connection
   Dim rsAuthors As New ADODB.Recordset
   Dim strConn As String, strSQL As String

   strConn = "Provider=MSDASQL;Driver={SQL Server};" & _

             "Server=MyServer;Database=pubs;UID=<username>;PWD=<strong password>;"

   strSQL = "SELECT * FROM Authors"

   cnPubs.CursorLocation = adUseClient
   cnPubs.Open strConn
   rsAuthors.Open strSQL, cnPubs, adOpenStatic, adLockReadOnly, adCmdText
				

Modification Type:MinorLast Reviewed:3/2/2005
Keywords:kbDatabase kbMDACNoSweep kbprb KB191085