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
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.
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
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.
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.
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.