SQL Server - SQL Confronto - Identificazione automatica e sostituzione dei diversi nomi del database?
-
27-10-2019 - |
Domanda
Ho due database di sviluppo a livello locale
Alpha
Beta_Dev
Ho due database di produzione in remoto
Alpha
Beta
Io uso SQL Confronta Per sincronizzare lo schema dei due database alfa.
A volte, procedure memorizzate nella versione di sviluppo del database Alpha
Tabelle di riferimento nel database Beta
, o nell'ambiente locale, Beta_Dev
.
Per esempio:
Select * from Beta_Dev.dbo.MyTable
Questo codice non funzionerà sul server di produzione, perché il database beta viene chiamato Beta
, piuttosto che Beta_Dev
.
C'è un modo, usando SQL confronta, per avere tutti gli SP o viste che si confrontano in modo tale da Beta_Dev (local) = Beta (remote)
?
Non solo i database verrebbero caricati in ordine di lavoro, ma SQL Confront non verrà ingannato nel pensare che gli SP siano diversi, quando solo beta_dev / beta sono diversi.
Soluzione
Non credo che tu possa farlo come vuoi, ma ecco una potenziale soluzione se è adatta a quello che vuoi fare
Creare Synonyms
per gli oggetti che sono riferimento nel file Beta
banche dati
USE [Alpha]
CREATE SYNONYM [dbo].[BetaMyTable] FOR [Beta].[dbo].[MyTable]
e
USE [Alpha_dev]
CREATE SYNONYM [dbo].[BetaMyTable] FOR [Beta_dev].[dbo].[MyTable]
Quindi i tuoi proc possono ora usare:
SELECT * FROM BetaMyTable
In SQL Confronta, esiste un'opzione Ignora Rego Edit Project... -> Options
chiamato Database and server name in synonyms
. Credo che sia controllato per impostazione predefinita, ma è lì se vuoi cambiarlo