2013-01-31 19 views
9

Nel mio progetto di database, ho aggiunto un riferimento a un server collegato. Quando uso il server collegato in una vista e cercare di costruire il mio progetto di database, SSDT segnala gli errori, perché non può capire i riferimenti ad uno qualsiasi degli schemi di riferimento sul server collegato:È necessario un riferimento al database per un server collegato in un progetto di database SQL Server?

[LinkedServer].[DB1].[dbo].[Table1] 

È possibile che questo sarebbe restituisce un errore che SSDT non può decifrare il riferimento a [DB1].[dbo].[Table1]. Ho provato ad aggiungere un riferimento a questo database, ma SSDT richiedeva un file .dacpac (prodotto da un altro progetto di database) o un database di sistema sullo stesso server del database nel mio progetto.

Come gestisco il riferimento a un database esterno? Esistono casi di utilizzo in cui un progetto deve fare riferimento a un database remoto che è non un progetto di database SSDT. Nel mio caso, sto accedendo al database di un'altra società e mettere questo database sotto controllo di versione come progetto SSDT è fuori questione.

+0

Come soluzione temporanea è possibile creare una vista nel server locale che seleziona * da un server remoto – cha

+1

@cha Potresti spiegare come si tratta di una soluzione alternativa? – stevebot

+0

perché SSDT farà riferimento alla vista sul server locale, invece della tabella sul server remoto – cha

risposta

12

Creare un nuovo progetto SQL per il database remoto, posizionare qualsiasi oggetto nel progetto che è necessario fare riferimento (non deve essere l'intero database) e quindi aggiungere tale progetto come riferimento del database al progetto. Non è necessario distribuire il database remoto, basta avere la definizione di oggetti che si utilizzano in modo che possano essere referenziati.

+0

Puoi essere più specifico? Se creo un nuovo progetto sql nella stessa soluzione e faccio riferimento a quel progetto, creo un nuovo oggetto tabella nel nuovo progetto, come posso specificare il nome del database e come fare riferimento al vecchio progetto? Significa che il nome del progetto è il nome del server collegato? – Muflix

4

L'opzione alla fine stabilita era utilizzare SSIS per l'importazione di dati. In questo modo, il trasferimento di dati remoti è avvenuto in un layer ETL. Il nostro database non ha fatto riferimento a nessun database remoto in questo modo, ma può anche migliorare le prestazioni (elimina i trasferimenti attraverso la rete, i cross server join ecc.).

Si consiglia di utilizzare SSIS o un metodo simile per ETL i dati in tabelle locali che il progetto di database può fare riferimento (senza bisogno di un riferimento di progetto esterno).

Problemi correlati