SQL Server - SQL -Vergleich - Automatische Identifizierung und Austausch verschiedener Datenbanknamen?
-
27-10-2019 - |
Frage
Ich habe zwei Entwicklungsdatenbanken vor Ort
Alpha
Beta_Dev
Ich habe zwei Produktionsdatenbanken aus der Ferne
Alpha
Beta
ich benutze SQL Compare Um das Schema der beiden Alpha -Datenbanken zu synchronisieren.
Manchmal gespeicherte Verfahren in der Entwicklungsversion der Datenbank Alpha
Referenztabellen in der Datenbank Beta
, oder in der lokalen Umgebung, Beta_Dev
.
Zum Beispiel:
Select * from Beta_Dev.dbo.MyTable
Dieser Code funktioniert nicht auf dem Produktionsserver, da die Beta -Datenbank aufgerufen wird Beta
, statt Beta_Dev
.
Gibt es eine Möglichkeit, SQL -Vergleichen zu verwenden, damit alle SPs oder Ansichten so verglichen werden, dass Beta_Dev (local) = Beta (remote)
?
Die Datenbanken würden nicht nur in funktionierender Reihenfolge hochgeladen, sondern SQL Compare wird nicht dazu gebracht, zu glauben, dass die SPs unterschiedlich sind, wenn nur Beta_dev / Beta unterschiedlich sind.
Lösung
Ich glaube nicht
Schaffen Synonyms
Für die Objekte, die in der Referenz sind Beta
Datenbanken
USE [Alpha]
CREATE SYNONYM [dbo].[BetaMyTable] FOR [Beta].[dbo].[MyTable]
und
USE [Alpha_dev]
CREATE SYNONYM [dbo].[BetaMyTable] FOR [Beta_dev].[dbo].[MyTable]
So können Ihre Procs jetzt verwenden:
SELECT * FROM BetaMyTable
In SQL Compare gibt es eine Ignorierregeloption in Edit Project... -> Options
genannt Database and server name in synonyms
. Ich glaube, es wird standardmäßig überprüft, aber es ist da, wenn Sie es ändern möchten