Grundlegendes zu Synonymen

Ein Synonym ist ein Datenbankobjekt, das zu folgenden Zwecken dient:

  • Ein Synonym stellt einen alternativen Namen für ein anderes Datenbankobjekt bereit, das als Basisobjekt bezeichnet wird und auf einem lokalen Server oder Remoteserver gespeichert sein kann.

  • Ein Synonym stellt eine Abstraktionsschicht bereit, die eine Clientanwendung vor Änderungen schützt, die am Namen oder Speicherort des Basisobjekts vorgenommen werden.

Nehmen Sie z. B. die Employee-Tabelle von Adventure Works, die auf dem Server Server1 gespeichert ist. Eine Clientanwendung müsste, um von einem anderen Server, Server2, auf diese Tabelle zu verweisen, den vierteiligen Namen Server1.AdventureWorks.Person.Employee verwenden. Die Clientanwendung müsste außerdem geändert werden, wenn sich der Speicherort der Tabelle ändert, z. B. in einen anderen Server.

Um diese beiden Probleme zu vermeiden, können Sie das Synonym EmpTable auf Server2 für die Employee-Tabelle auf Server1 erstellen. Nun muss die Clientanwendung nur den einteiligen Namen EmpTable verwenden, um auf die Employee-Tabelle zu verweisen. Wenn sich außerdem der Speicherort der Employee-Tabelle ändert, müssen Sie das Synonym EmpTable ändern, um auf den neuen Speicherort der Employee-Tabelle zu verweisen. Da es keine ALTER SYNONYM-Anweisung gibt, müssen Sie zuerst das Synonym EmpTable löschen und anschließend mit dem gleichen Namen neu erstellen, aber das Synonym auf den neuen Speicherort der Employee-Tabelle verweisen lassen.

Ein Synonym gehört zu einem Schema, und der Name eines Schemas muss wie andere Objekte in einem Schema eindeutig sein. Sie können Synonyme für die folgenden Datenbankobjekte erstellen:

Gespeicherte Assemblyprozedur (CLR)

Assembly-Tabellenwertfunktion (CLR)

Assemblyskalarfunktion (CLR)

Assemblyaggregatfunktion (CLR)

Replikationsfilterprozedur

Erweiterte gespeicherte Prozedur

SQL-Skalarfunktion

SQL-Tabellenwertfunktion

SQL-Inline-Tabellenwertfunktion

Gespeicherte SQL-Prozedur

Sicht

Table1 (Benutzerdefiniert)

1 Enthält lokale und globale temporäre Tabellen

HinweisHinweis

Vierteilige Namen für Funktionsbasisobjekte werden nicht unterstützt.

Ein Synonym kann nicht das Basisobjekt für ein anderes Synonym sein. Außerdem kann ein Synonym nicht auf eine benutzerdefinierte Aggregatfunktion verweisen.

Die Bindung zwischen einem Synonym und dem zugehörigen Basisobjekt erfolgt nur mit dem Namen. Alle Überprüfungen auf das Vorhandensein, den Typ und die Berechtigungen für das Basisobjekt werden bis zur Laufzeit verschoben. Deshalb kann das Basisobjekt geändert, gelöscht oder gelöscht und durch ein anderes Objekt, das den gleichen Namen wie das ursprüngliche Basisobjekt hat, ersetzt werden. Betrachten wir als Beispiel das Synonym MyContacts, das auf die Person.Contact-Tabelle in Adventure Works verweist. Wenn die Contact-Tabelle gelöscht und durch die Person.Contact-Sicht ersetzt wird, verweist MyContacts nun auf die Person.Contact-Sicht.

Verweise auf Synonyme sind nicht schemagebunden. Deshalb kann ein Synonym jederzeit gelöscht werden. Durch das Löschen eines Synonyms besteht jedoch die Gefahr, dass Verweise auf das gelöschte Synonym zurückbleiben. Diese Verweise werden erst zur Laufzeit gefunden.

Synonyme und Schemas

Wenn Sie über ein Standardschema verfügen, das nicht Ihnen gehört, und Sie ein Synonym erstellen möchten, müssen Sie den Synonymnamen mit dem Namen eines Schemas, das Ihnen gehört, qualifizieren. Angenommen, Ihnen gehört ein Schema x, aber y ist Ihr Standardschema und Sie verwenden die CREATE SYNONYM-Anweisung. In diesem Fall müssen Sie dem Namen des Synonyms das Schema x als Präfix voranstellen, anstatt dem Synonym einen einteiligen Namen zu geben. Weitere Informationen zum Erstellen von Synonymen finden Sie unter CREATE SYNONYM (Transact-SQL).

Erteilen von Berechtigungen für Synonyme

Nur Besitzer eines Synonyms, Mitglieder der Rollen db_owner oder db_ddladmin können Berechtigungen für ein Synonym erteilen.

Sie können eine GRANT/DENY/REVOKE-Anweisung für alle oder einige der folgenden Berechtigungen für ein Synonym ausführen:

CONTROL

DELETE

EXECUTE

INSERT

SELECT

TAKE OWNERSHIP

UPDATE

VIEW DEFINITION