SQL Server - SQL Confronto - Identificazione automatica e sostituzione dei diversi nomi del database?

StackOverflow https://stackoverflow.com/questions/6337900

  •  27-10-2019
  •  | 
  •  

Domanda

Ho due database di sviluppo a livello locale

  1. Alpha
  2. Beta_Dev

Ho due database di produzione in remoto

  1. Alpha
  2. 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.

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top