Vai al contenuto

[ASP-SQL] unica query su due database contemporaneamente

Inviato

Salve, sono in difficoltà con l'utilizzo di una query SQL in una pagina ASP.

Testata con Query Analyzer, la query fa il suo lavoro egregiamente (o quasi, dovrei affinare la logica, ma il risultato per ora è accettabile).

 

Il problema mi si pone quando la porto nella mia pagina ASP poichè non so come utilizzare due connessioni contemporaneamente.

 

Ho trovato soluzioni che si riferivano sempre a due query separate.

Bando alle ciance, ecco la query :

 

SELECT (DB1.dbo.T_CORPO.C_UFF_SEGN) as comandoD, (DB1.dbo.T_CORPO.ANNO) as annoD, (DB1.dbo.T_CORPO.PROGRESSIVO) as numeroD, (DB2.dbo.T_CORPO.C_UFF_SEGN) as comandoV, (DB2.dbo.T_CORPO.ANNO) as annoV, (DB2.dbo.T_CORPO.PROGRESSIVO) as numeroV, (DB2.dbo.T_CORPO.RFRCNMBR_SDI) as rifSDI 
FROM DB1.dbo.T_CORPO, DB2.dbo.T_CORPO
WHERE DB1.dbo.T_CORPO.RFRCNMBR = DB2.dbo.T_CORPO.RFRCNMBR_SDI
AND DB1.dbo.T_CORPO.D_SEGN = DB2.dbo.T_CORPO.D_SEGN
AND DB1.dbo.T_CORPO.RFRCNMBR IN (SELECT DB2.dbo.T_CORPO.RFRCNMBR_SDI FROM DB2.dbo.T_CORPO WHERE DB2.dbo.T_CORPO.NOTA LIKE '%testodacercare%')

 

ora, pur creando due connessioni, quando arrivo qui :

 

objRs.Open myquery, ConnSQL

 

come gli dico che la connessione deve interessare entrambi i DB?

 

Altra cosa, per me è importante che l'utente che interroga i DB abbia solo diritti di lettura.

Grazie

Featured Replies

Inviato
  • Autore

Beh, altrove mi è stato detto che non è possibile connettersi contemporaneamente a due DB, ma il mio problema è che il risultato della prima query mi serve per costruire la seconda, quindi ho fatto così:

'**********************************************
' COSTRUISCO LA QUERY
'**********************************************
myquery = "SELECT (DB2.dbo.TABELLAx.C_UFF_SEGN) as ufficioV, (DB2.dbo.TABELLAx.ANNO) as annoV, (DB2.dbo.TABELLAx.PROGRESSIVO) as numeroV, (DB2.dbo.TABELLAx.RFRCNMBR_SDI) as rifSDI, (DB2.dbo.TABELLAx.D_SEGN) as dataV FROM DB2.dbo.TABELLAx WHERE "
'**********************************************
' Mi connetto ai DB
'**********************************************
Set ConnSQLD = Server.CreateObject ("ADODB.Connection")
Set ConnSQLV = Server.CreateObject ("ADODB.Connection")
ConnSQLD = "Provider=sqloledb;Data Source="&ipServer&";Initial Catalog=[b]DB1[/b];User Id="&UserId&";Password="&Password&";"
ConnSQLV = "Provider=sqloledb;Data Source="&ipServer&";Initial Catalog=[b]DB2[/b];User Id="&UserId&";Password="&Password&";"
'**********************************************
'collegamento ai DB
Set objRs = Server.CreateObject("ADODB.Recordset")
Set objRs2 = Server.CreateObject("ADODB.Recordset")
objRs.Open myquery, ConnSQLV
While objRs.EOF = false
query2 = "SELECT (DB1.dbo.TABELLAx.C_UFF_SEGN) as ufficioD, (DB1.dbo.TABELLAx.ANNO) as annoD, (DB1.dbo.TABELLAx.PROGRESSIVO) as numeroD FROM DB1.dbo.TABELLAx WHERE DB1.dbo.TABELLAx.RFRCNMBR = '" & [b]objRs("rifSDI")[/b] & "'"

objRs2.Open query2, ConnSQLD
'**********************************************
'valorizzo le variabili 
DATO1 = objRs("ufficioV")
DATO2 = objRS("annoV")
DATO3 = objRs("numeroV")
DATO4V = DATO1 & " " & DATO2 & " " & DATO3
While objRs2.EOF = false
'valorizzo le variabili 
DATO1 = objRs2("ufficioD")
DATO2 = objRS2("annoD")
DATO3 = objRs2("numeroD")
DATO4D = DATO1 & " " & DATO2 & " " & DATO3
'**********************************************
' STAMPO RISULTATI
'**********************************************
%>
<br>
<p> <b><font size="2">- <%=DATO4V%>           <--->    <%=DATO4D%></font></b> 
<%
'**********************************************
objRs2.MoveNext
Wend
objRS2.Close()
objRs.MoveNext
Wend
' chiudo e distruggo tutto
Set objRS2 = Nothing
objRS.Close()
Set objRS = Nothing
'**********************************************

Inviato
in informatica ed in elettronica una sola CPU NON può fare 2 cose contemporaneamente, nemmeno il multitasking è un vero multitasking. Comunque detto questo ti conviene aprire una connessione ad un db, eseguire la query e poi eseguire la seconda query nel secondo db, cosa posso dirti più di così?

Crea un account o accedi per lasciare un commento