Ne la définition d'un ADO de Commande du ActiveConnection = Rien de fermer le sous-jacent de Connexion SQL?

J'ai un client qui est Classique ASP application est de générer ASP_0147 erreurs. La première chose que je vérifie est qu'ils sont de clôture et de libérer SQL/ADO ressources timeously.

Leur code a le schéma suivant:

Function GetXXXXRecordSet()
  Set objConn = Server.CreateObject("ADODB.Connection")
  With objConn 
    .CursorLocation = 3 ''adUseServer (default)
    .ConnectionString = strConnectionString
    .Open
  End With

  Set objCmd = Server.CreateObject("ADODB.Command")
  Set objCmd.ActiveConnection = objConn

  '' Build command object to call SQL stored proc, snipped for brevity

  Set objRs = Server.CreateObject("ADODB.RecordSet")
  objRs.Open objCmd, ,3,4 '' Cursor=adOpenStatic, Locktype=adLockBatchOptimistic

  '' Return Recordset
  Set GetXXXXRecordSet = objRs

  If Not objCmd Is Nothing Then
    objCmd.ActiveConnection = Nothing  '' Should this use a Set statement?
    Set objCmd = Nothing
  End If
  If Not ObjRs Is Nothing The Set objRs = Nothing
End Function

Ne la définition d'un ADO de Commande du ActiveConnection = Rien de fermer le sous-jacent de Connexion SQL ou est-ce que doivent être fermés de façon explicite?

Devraient également la ligne:

objCmd.ActiveConnection = Nothing

:

Set objCmd.ActiveConnection = Nothing

Bizarrement la première version ne génère pas une erreur, qui est pourquoi je vous demande.

Il a été si longtemps depuis que j'ai regardé ADO et mes connaissances sont un peu rouillé.

Devrait être: Set objCmd.ActiveConnection = Rien en effet
Je suis curieux ne l'ajout d'une connexion .Proche le code ci-dessus résoudre le problème?
Je l'ai transmis les recommandations pour le client, maintenant juste attendre et voir.

OriginalL'auteur Kev | 2010-03-03