Post by Lorenzo BenagliaPost by Info_pat_dgmEs.
T1 , T2 T3 contenute in DB_A
TX contenuta in DB_Y
Il risultato che vorrei ottenere dovrebbe essere una query che
contenga i campi che mi interessano delle tabelle TX,T1,T2,T3.
Ciao Patrizio,
se i database risiedono sulla stessa istanza SQL Server, puoi connetterti al
DB_A e referenziare la tabella TX del DB_Y utilizzando il three-part name,
ovvero specificando database.owner.tabella (in SQL Server 2000) o
database.schema.tabella (in SQL Server 2005); se i database risiedono su due
istanze differenti (anche su server diversi) devi definire un linked server
all'istanza remota ed utilizzare il four-part name, ovvero specificando
server.database.owner.tabella (in SQL Server 2000) o
server.database.schema.tabella (in SQL Server 2005).
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo
http://italy.mvps.org
ti ringrazio per il suggerimento io quello che stavo cercando di usare è
l'istruzione
*********************************************************************************
SELECT Rowset_2.TPE_Conta, Rowset_2.TPE_CodAn,
Rowset_2.TPE_DataSegnalazione, Rowset_2.TPE_CodSegnaEff,
datiussm.dbo.T_voci.T_Descrizione AS Descrizione,
Rowset_2.TPE_SedeAuGiudiziaria,
datiussm.dbo.T_sedi.T_sede, Rowset_2.TPE_Anno AS TPE_CodDivdaAG,
Rowset_2.TPE_NumRegReato,
Decod.T_Descrizione AS Descaluff
FROM OPENDATASOURCE ('SQLOLEDB', 'Data Source=(local);User
ID=WebA;Password=a' ).datiussm.dbo.T_Penale_Te Rowset_2 LEFT OUTER JOIN
datiussm.dbo.T_voci Decod ON Rowset_2.TPE_CodDivdaAG =
Decod.ID LEFT OUTER JOIN
datiussm.dbo.T_sedi ON Rowset_2.TPE_SedeAuGiudiziaria
= datiussm.dbo.T_sedi.ID LEFT OUTER JOIN
datiussm.dbo.T_voci ON Rowset_2.TPE_CodSegnaEff =
datiussm.dbo.T_voci.ID
WHERE EXISTS
(
SELECT TLM_ID_MovimentiComunita,TLM_ID_segnazione
FROM OPENDATASOURCE ('SQLOLEDB', 'Data Source=(local);User
ID=Web_B;Password=b' ).daticomunita.dbo.TC_LegameMovSegnalazioni
WHERE (TLM_ID_MovimentiComunita = 34)
)
ORDER BY Rowset_2.TPE_DataSegnalazione
*******************************************************************************
E credo sia quello che tu mi suggerisci.
Il problema è che a me dovrebbe funzionare con la clausola IN e non EXISTS e
dovrebbe essere cosi:
SELECT Rowset_2.TPE_Conta, Rowset_2.TPE_CodAn,
Rowset_2.TPE_DataSegnalazione, Rowset_2.TPE_CodSegnaEff,
datiussm.dbo.T_voci.T_Descrizione AS Descrizione,
Rowset_2.TPE_SedeAuGiudiziaria,
datiussm.dbo.T_sedi.T_sede, Rowset_2.TPE_Anno AS TPE_CodDivdaAG,
Rowset_2.TPE_NumRegReato,
Decod.T_Descrizione AS Descaluff
FROM OPENDATASOURCE ('SQLOLEDB', 'Data Source=(local);User
ID=WebA;Password=a' ).datiussm.dbo.T_Penale_Te Rowset_2 LEFT OUTER JOIN
datiussm.dbo.T_voci Decod ON Rowset_2.TPE_CodDivdaAG =
Decod.ID LEFT OUTER JOIN
datiussm.dbo.T_sedi ON Rowset_2.TPE_SedeAuGiudiziaria
= datiussm.dbo.T_sedi.ID LEFT OUTER JOIN
datiussm.dbo.T_voci ON Rowset_2.TPE_CodSegnaEff =
datiussm.dbo.T_voci.ID
WHERE (Rowset_2.TPE_Conta IN
(
SELECT TLM_ID_MovimentiComunita,TLM_ID_segnazione
FROM OPENDATASOURCE ('SQLOLEDB', 'Data Source=(local);User
ID=Web_B;Password=b' ).daticomunita.dbo.TC_LegameMovSegnalazioni
WHERE (TLM_ID_MovimentiComunita = 34)
)
ORDER BY Rowset_2.TPE_DataSegnalazione
********************************************************************************
Ma in questo modo nel query analizer mi da l’errore:
Se una subquery non è introdotta da EXISTS, nell'elenco di selezione è
possibile specificare una sola espressione.
A me serve che il risultato della query sia il risultato dei record che
soddisfano la condizione della subquery i quali elaborati dalla query
principale in cui la condizione è Rowset_2.TPE_Conta = TLM_ID_segnazione
visualizzino quello che a me interessa.
Potresti dirmi dove sbaglio?
Ho provato a spostare le tabelle in un unico DB usando la query con la
clausola IN e la subquery funziona. è possibile fare la stessa cosa
mantenendo la stessa istanza SQL e DB diversi?
grazie