Freigeben über


Verwenden von Synonymen (Datenbankmodul)

Synonyme können anstelle des Basisobjekts, auf das verwiesen wird, in mehreren SQL-Anweisungen und Ausdruckskontexten verwendet werden. Die folgende Tabelle enthält eine Liste dieser Anweisungen und Ausdruckskontexte:

SELECT

INSERT

UPDATE

DELETE

EXECUTE

Untergeordnete SELECT-Anweisungen

Wenn Sie Synonyme in den vorher beschriebenen Kontexten verwenden, ist das Basisobjekt davon betroffen. Angenommen, ein Synonym verweist auf ein Basisobjekt, das eine Tabelle darstellt, und Sie fügen eine Zeile in das Synonym ein. In Wirklichkeit fügen Sie dann eine Zeile in die Tabelle ein, auf die verwiesen wird.

HinweisHinweis

Auf ein Synonym, das auf einem Verbindungsserver gespeichert ist, kann nicht verwiesen werden.

Sie können ein Synonym als Parameter für die OBJECT_ID-Funktion verwenden; die Funktion gibt jedoch die Objekt-ID des Synonyms und nicht das Basisobjekt zurück.

Sie können in einer DDL-Anweisung nicht auf ein Synonym verweisen. So generieren beispielsweise die folgenden Anweisungen, die auf ein Synonym namens dbo.MyProduct verweisen, einen Fehler:

ALTER TABLE dbo.MyProduct
   ADD NewFlag int null;
EXEC ('ALTER TABLE dbo.MyProduct
   ADD NewFlag int null');

Die folgenden Berechtigungsanweisungen beziehen sich nur auf das Synonym, nicht auf das Basisobjekt.

GRANT

DENY

REVOKE

 

Synonyme sind nicht schemagebunden. Deshalb kann von den folgenden schemagebundenen Ausdruckskontexten nicht auf Synonyme verwiesen werden:

CHECK-Einschränkungen

Berechnete Spalten

Standardausdrücke

Regelausdrücke

Schemagebundene Sichten

Schemagebundene Funktionen

Weitere Informationen zu schemagebundenen Funktionen finden Sie unter Erstellen von benutzerdefinierten Funktionen (Datenbankmodul).

Beispiele

Im folgenden Beispiel wird ein Synonym erstellt, das in nachfolgenden Beispielen verwendet wird.

USE tempdb;
GO
CREATE SYNONYM MyAddressType
FOR AdventureWorks2008R2.Person.AddressType;
GO

Das folgende Beispiel fügt eine Zeile in die Basistabelle ein, auf die vom MyAddressType-Synonym verwiesen wird.

USE tempdb;
GO
INSERT INTO MyAddressType (Name)
VALUES ('Test');
GO

Das folgende Beispiel veranschaulicht, wie in dynamischem SQL auf ein Synonym verwiesen werden kann.

USE tempdb;
GO
EXECUTE ('SELECT Name FROM MyAddressType');
GO