Relazione tra due tabelle appartenenti a due database diversi...

martedì 12 maggio 2009 - 11.04

e.disanto Profilo | Junior Member

Salve a tutti ,
premetto che ho provato ad utilizzare la funzione "Cerca nel sito" ma non mi è sembrato di vedere risultati che rispondessero al mio quesito, perciò espongo di seguito il mio problema...
Ho un database comune in cui sono memorizzati una serie di dati (es. Comuni, Anagrafiche, ecc.) necessari ad altri database, ed ho la necessità di relazionare le tabelle degli altri database a queste.
Ora i dubbi che mi sono venuti:
1) E' possibile fare questa operazione?
2) In caso affermativo, lato Visual Studio (DataSet Designer per l'esattezza) è gestibile la cosa ed è possibile estrapolare risultati che siano la join di queste tabelle in maniera del tutto "normale"???
Grazie in anticipo per l'aiuto ;)

Ernesto di Santo

dinoxet Profilo | Senior Member

Se ho capito bene,
puoi tranquillamente usare tabelle di altri db semplicemente creando una vista che punta a quella tabella :
select *
from nomedb.dbo.nometabella

DINOXET
__________________________________________
impossible is only a word

alx_81 Profilo | Guru

>Salve a tutti ,
Ciao

>Ho un database comune in cui sono memorizzati una serie di dati
>(es. Comuni, Anagrafiche, ecc.) necessari ad altri database,
>ed ho la necessità di relazionare le tabelle degli altri database a queste.
Spero che stai parlando di sql server, ma credo che la cosa valga per tutti i DBMS

>Ora i dubbi che mi sono venuti:
>1) E' possibile fare questa operazione?
non è possibile fare una relazione tra due oggetti di due database diversi.
se provi, otterrai questo errore:

"Msg 1763, Level 16, State 0, Line 1
Cross-database foreign key references are not supported. Foreign key 'esterno.dbo.table_1'."

Però puoi usare i sinonimi per puntare ad oggetti esterni, facendoli "sembrare" appartenenti al tuo database di partenza.
http://msdn.microsoft.com/it-it/library/ms177544.aspx

Invece che usare la forma nomedb.nomeschema.nomeoggetto, usi il sinonimo che punta a quell'oggetto.

Con visual studio al massimo, ti puoi creare le relazioni una volta scaricati i dati in locale..

>Grazie in anticipo per l'aiuto ;)
di nulla!
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

e.disanto Profilo | Junior Member

Ho provato tutte e due le vostre risposte (ho creato sia una vosta che un sinonimo), ma in termini di performance, quale mi consigliereste?
Ovvero, quale delle due soluzioni secondo voi è migliore o più adatta? (a me serve soltanto visibilità di queste tabelle nel secondo DataBase, non ho bisogno di fare aggiornamenti ai dati)
Grazie ancora

Ernesto di Santo

alx_81 Profilo | Guru

>Ho provato tutte e due le vostre risposte (ho creato sia una
>vosta che un sinonimo), ma in termini di performance, quale mi
>consigliereste?
>Ovvero, quale delle due soluzioni secondo voi è migliore o più
>adatta? (a me serve soltanto visibilità di queste tabelle nel
>secondo DataBase, non ho bisogno di fare aggiornamenti ai dati)
Prestazioni medesime, il sinonimo ti astrae di più, nel senso che è stato introdotto proprio come ALIAS, uno, per evitare di scrivere tutta la forma nomedb.nomeschema.nomeoggetto e due perchè così, in caso di trasferimento di oggetto tra server e/o database, cambi le informazioni in un solo posto.
E sei sicuro che il tuo codice funzionerà sempre..

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

dinoxet Profilo | Senior Member

Tutto dipende dalla tua infrastruttura, certo un file in locale solitamente è più veloce però lo devi aggiornare di continuo, con una vista non hai questa incombenzaSe la tabella è su un'altra macchina ci devi mettere anche la velocita di rete, e non in ultimo incidono le dimenzione della tabella.


in pratica prova.
DINOXET
__________________________________________
impossible is only a word
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5