[SQL Server]Effettuare query su tabelle di database diversi nella stes...

mercoledì 02 luglio 2008 - 10.09

gigi90 Profilo | Senior Member

Salve a tutti,
ho notato che in MySQL è possibile effettuare query con JOIN su tabelle di database diversi, il che è molto utile, quindi mi domandavo, è possibile fare cio anche in SQL Server con il T-SQL?

Datemi voi una dritta!!!

lbenaglia Profilo | Guru

>ho notato che in MySQL è possibile effettuare query con JOIN
>su tabelle di database diversi, il che è molto utile, quindi
>mi domandavo, è possibile fare cio anche in SQL Server con il
>T-SQL?

Ciao Gigi,

Se i db risiedono sulla stessa istanza è sufficiente utilizzare il three-part name: database.schema.oggetto
Se i db risiedono su istanze diverse dovrai definire un linked server tra le due istanze e ricorrere al four-part name: linkedserver.database.schema.oggetto

Sui Books Online troverai tutti i dettagli.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

gigi90 Profilo | Senior Member

Ho provato ad utilizzare questa sintassi, ma non funziona, mi dice che non trova un oggetto, esempio ho i seguenti database con le tabelle:

DATABASECOMUNI
TabellaProvincie(IDProvincia,Nome)

DATABASEANAGRAFICHE
TabellaDipendenti(Nome,Cognome,IDProvinciaNascita)

Voglio estrarre la informazioni dei dipendenti, con il nome delle provincia che si trova nell'altro DB, quindi eseguo sta query:

SELECT DATABASEANAGRAFICHE .TabellaDipendenti.Nome,DATABASEANAGRAFICHE .TabellaDipendenti.Cognome,DATABASECOMUNI.TabellaProvincie.Nome
FROM DATABASEANAGRAFICHE.TabellaDipendenti INNER JOIN DATABASECOMUNI.TabellaProvincie ON
DATABASEANAGRAFICHE.TabellaDipendenti.IDProvinciaNascita=DATABASECOMUNI.TabellaProvincie.IDProvincia

Ma non funziona!!!

lbenaglia Profilo | Guru

>Ho provato ad utilizzare questa sintassi, ma non funziona, mi
>dice che non trova un oggetto, esempio ho i seguenti database
>con le tabelle:
>
>DATABASECOMUNI
> TabellaProvincie(IDProvincia,Nome)
>
>DATABASEANAGRAFICHE
>TabellaDipendenti(Nome,Cognome,IDProvinciaNascita)

Qual è lo schema di queste due tabelle? dbo?

Supponendo che si tratti di dbo, modifica la query nel seguente modo:

USE DATABASEANAGRAFICHE; SELECT D.Nome, D.Cognome, P.Nome FROM dbo.TabellaDipendenti AS D INNER JOIN DATABASECOMUNI.dbo.TabellaProvincie AS P ON D.IDProvinciaNascita = P.IDProvincia;

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

gigi90 Profilo | Senior Member

Non avevo messo il dbo, giacchè ci sei, mi potresti spiegare cosa è uno schema, tipo dbo, che dovrebbe stare per database owner se non sbaglio?!?

lbenaglia Profilo | Guru

>Non avevo messo il dbo, giacchè ci sei, mi potresti spiegare
>cosa è uno schema, tipo dbo, che dovrebbe stare per database
>owner se non sbaglio?!?
http://msdn.microsoft.com/en-us/library/ms190387.aspx

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5