VBA Connexion de Base de données

Comment changer le code ci-dessous afin d'éviter ce que vous voyez dans la capture d'écran.

Je suis en cours d'exécution d'une macro avec le code suivant

Dim conn As ADODB.Connection
Dim rec1 As ADODB.Recordset
Dim thisSql As String

Set conn = New ADODB.Connection

Dim sConn As String
  sConn = "Provider=SQLOLEDB;Trusted_Connection=Yes;Server=xyz;Database=xyz;UID=xyz;PWD=xyz"
conn.Open sConn

' this is creating multiple connections.
Set rec1 = New ADODB.Recordset
rec1.Open thisSql, conn

qui exécute une requête SQL Server (qui est d'environ 20 lignes de long et contient 4 joint). Tout est bien sauf pour le fait que, après quelques temps de marche, il ma DB admin dit que ma requête est le chargement de la base de données trop.

Maintenant, ma requête pourrait être à l'origine du problème, ou peut-être que Excel est de commencer à exécuter plusieurs connexions à la fois. Certains éléments de preuve pour ce qui est de la capture d'écran ci-dessous et le fait que la charge sur la base de données semble augmenter avec le temps.

Comment puis-je établir une connexion DB sans cesse créer de nouvelles connexions?

Quelqu'un a eu le même problème à travailler avec Excel DB macros?

VBA Connexion de Base de données


Mise à JOUR

Même si les réponses ci-dessous ont été très utiles (surtout pour quelqu'un débutant en VBA), il semble que la principale raison de ma requête a été prise de charge a été une combinaison de plusieurs connexions et d'avoir sauté une ligne dans mon code:

    With Sheets("FVols").QueryTables.Add(Connection:=rec1, Destination:=Sheets("FVols").Range("A1"))
    .name = "data"
    .FieldNames = True
    .Refresh BackgroundQuery:=True <<<<<<<<<<<<<<<<<<<<<<<-----

End With
Sans voir plus de votre code de macro, il est difficile de répondre, mais il semble que vous ne jamais fermer la connexion, donc, oui, à chaque fois que votre macro s'exécute, vous allez créer une nouvelle connexion.
Je l'ai écrit dans le connecticut.Fermer à la fin, mais encore, elle crée de nouvelles connexions (rec1.Fermer les accidents de la macro). Est-il autre chose que je dois fermer?

OriginalL'auteur frickskit | 2013-08-19