Requête groupé de 2 Bases SQL Server différentes

Signaler
Messages postés
193
Date d'inscription
jeudi 14 février 2002
Statut
Membre
Dernière intervention
25 mars 2011
-
Messages postés
221
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
13 décembre 2009
-
Bonjour,

j'ai deux bases de données sur sql server et j'aimerais faire une requete groupée en interrogeant en meme temps les deux bases afin de réduire la charge

voici en gros ma requête actuelle (qui marche mais qui est plutot longue)

Set Ct = New ADODB.Connection
Ct.ConnectionString = "DRIVER=SQL Server;SERVER=s1;UID=mdp;APP=Visual Basic;DATABASE=Base1;Network=DBMSSOCN;"
Ct.Open
set rc = New ADODB.Recordset

Set Ct2 = New ADODB.Connection
Ct2.ConnectionString = "DRIVER=SQL Server;SERVER=s2;UID=mdp;APP=Visual Basic;DATABASE=Base2;Network=DBMSSOCN;"
Ct2.Open
set rc2 = New ADODB.Recordset


rc.Open "Select N1 FROM B1 where N1 = '10'", Ct, adOpenKeyset, adLockBatchOptimistic
While Not rc.EOF = True
rc2.Open "Select N2 FROM B2 where N2 =N1", Ct, adOpenKeyset, adLockBatchOptimistic
If rc2.recordcount>0 then exit sub
rc.MoveNext
rc2.close
Wend
rc.Close

la requete ci-dessus est grossiere mais dans la réalité elle marche

il faudrait que ma connection CT contiennt la base1 et la base2 et que ma requete RC ressemble a ceci

rc.Open "Select Base1.N1,Base2.N2 FROM Base1,Base2 where Base1.N1 = Base2.N2", Base1,Base2, adOpenKeyset, adLockBatchOptimistic

je sais pas si c'est clair mais est-ce possible simplement sous sql server

merci d'avance !

metalcoder

6 réponses

Messages postés
221
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
13 décembre 2009
1
Salut,

Le problème ne viens pas trop de SQLServer dans ce cas mais de comment tu souhaite accéder aux données. Ce qui ne passera pas à priori c'est (en souligné):
rc.Open "Select Base1.N1,Base2.N2 FROM Base1,Base2 where Base1.N1 = Base2.N2", Base1,Base2, adOpenKeyset, adLockBatchOptimistic
La méthodes Open attends une seule connexion.

Peut être que les personnes qui ont vb6 pourrons te donner une méthodes, cependant rien ne t'empêche de créer une view dans une te des bases, qui ferait le travail que tu demande. Tu n'aurais plus qu'à y accéder de manière classique avec une seule connexion.

A+
Messages postés
221
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
13 décembre 2009
1
"une te des bases" --> "une de tes bases"...
Messages postés
193
Date d'inscription
jeudi 14 février 2002
Statut
Membre
Dernière intervention
25 mars 2011
1
oui en effet j'avais bien remarque que ma methode de connection ne permet pas de me connecter a deux bases. j'ai bien la solution en creer deux objet distinct de connection mais niveau ressources ce n'est pas du tout optimisé.

mon probleme c'est que j'ai deux bases sql server totalement distinct mais dont j'ai besoin en meme temps pour faire correspondre des données.Je sais pas si on peut faire une espece d'union de bases...si qquun avait la solution ce serait cool


@+


Metalcoder
Messages postés
221
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
13 décembre 2009
1
Hé bien, en voilà une :

rien ne t'empêche de créer une view dans une te des bases, qui ferait le travail que tu demande. Tu n'aurais plus qu'à y accéder de manière classique avec une seule connexion.
Messages postés
193
Date d'inscription
jeudi 14 février 2002
Statut
Membre
Dernière intervention
25 mars 2011
1
pourquoi pas, a essayer...par contre je suis dans une grosse boite avec un service informatique tres réticent et moi je ne suis qu'un bidouilleur qui essaye de faire avancer les choses sans trop me faire voir...je vais devoir faire ca en douce surtout que je touche a des bases plutot sérieuse qui gere des cout...

merci pour ton aide, c'est peut etre toi qui a la solution.

bonne soirée


Metalcoder
Messages postés
221
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
13 décembre 2009
1
Je comprend mieux la situation...

Tiens, une solution --> Connexion Multi-base SQL Server via ADO

Surement voir à modifier la connexion pour ne pas la lier à une base particulière et faire référence aux bases dans les requêtes comme parents des tables.

A+