Erstellen Sie ein Synonym für alle Tabellen in einer anderen Datenbank mit einem Skript

7

Gibt es eine einfache Möglichkeit, Synonyme für alle Tabellen in einer anderen Datenbank zu erstellen?

Danke

BEARBEITEN: Ich habe eine Anzahl von gespeicherten Prozeduren, die einige Tabellenschemas in die Select-Abfragen fest codierten. Wenn ich die Schemas auf einen neuen Server kopiere, scheitern die SPs, weil das Schema nicht existiert. Es gibt wenig Kontrolle über den Zielserver und ich möchte nicht alle SP ändern müssen, daher dachte ich, dass Synonym eine gute Lösung sein könnte.

    
Haoest 25.08.2010, 19:20
quelle

3 Antworten

22

Sie können eine solche Abfrage in der Originaldatenbank ausführen und dann die Ausgabeergebnisse für Ihre neue Datenbank ausführen.

%Vor%

Wenn Sie dies beispielsweise für die Master-Datenbank ausführen, wird Folgendes erzeugt:

%Vor%     
Joe Stefanelli 25.08.2010 19:53
quelle
9

Erstellen Sie eine gespeicherte Prozedur in etwa so:

%Vor%

Dann führe es so:

%Vor%

Beachten Sie, dass Sie dies als Benutzer mit der Berechtigung zum Erstellen von Synonymen ausführen müssen. Wenn Sie möchten, dass ein Benutzer ohne diese Berechtigungen sie ausführen kann, haben Sie in SQL 2000 kein Glück, in SQL 2005 können Sie eine EXECUTE AS-Klausel einfügen.

    
ErikE 26.08.2010 02:41
quelle
3

Ist die andere Datenbank auf einem separaten Server (oder einer Instanz) oder enthält die Instanz beide Datenbanken?

Wenn es sich um eine einzelne Instanz handelt und beide Datenbanken darauf enthalten sind - verwenden Sie die drei folgende Notation:

%Vor%

Wenn die andere Datenbank in einer separaten SQL Server-Instanz vorhanden ist (Sie können mehr als einen SQL Server in einer Box haben) oder die Datenbank auf einer SQL Server-Instanz in einer anderen Box / VM vorhanden ist, erstellen Sie eine Linked Server Instanz. Dann verwenden Sie vier Namenschreibweise:

%Vor%     
OMG Ponies 25.08.2010 19:32
quelle

Tags und Links