metalcoder
Messages postés193Date d'inscriptionjeudi 14 février 2002StatutMembreDernière intervention25 mars 2011
-
10 nov. 2009 à 11:54
cs_Ayr
Messages postés221Date d'inscriptionmercredi 9 avril 2003StatutMembreDernière intervention13 décembre 2009
-
11 nov. 2009 à 07:11
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
cs_Ayr
Messages postés221Date d'inscriptionmercredi 9 avril 2003StatutMembreDernière intervention13 décembre 20092 10 nov. 2009 à 22:23
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.
metalcoder
Messages postés193Date d'inscriptionjeudi 14 février 2002StatutMembreDernière intervention25 mars 20111 10 nov. 2009 à 22:28
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
cs_Ayr
Messages postés221Date d'inscriptionmercredi 9 avril 2003StatutMembreDernière intervention13 décembre 20092 10 nov. 2009 à 22:36
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
metalcoder
Messages postés193Date d'inscriptionjeudi 14 février 2002StatutMembreDernière intervention25 mars 20111 10 nov. 2009 à 22:41
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.