CREATE SYNONYM (Transact-SQL)
Erstellt ein neues Synonym.
Gilt für: SQL Server (SQL Server 2008 bis aktuelle Version), Windows Azure SQL-Datenbank (Ursprüngliche Version bis aktuelle Version). |
Transact-SQL-Syntaxkonventionen
Syntax
-- SQL Server Syntax
CREATE SYNONYM [ schema_name_1. ] synonym_name FOR <object>
<object> :: =
{
[ server_name.[ database_name ] . [ schema_name_2 ]. object_name
| database_name . [ schema_name_2 ].| schema_name_2. ] object_name
}
-- Windows Azure SQL Database Syntax
CREATE SYNONYM [ schema_name_1. ] synonym_name FOR < object >
< object > :: =
{
[database_name. [ schema_name_2 ].| schema_name_2. ] object_name
}
Argumente
schema_name_1
Gibt das Schema an, in dem das Synonym erstellt wird. Wenn schema nicht angegeben ist, verwendet SQL Server das Standardschema des aktuellen Benutzers.synonym_name
Der Name des neuen Synonyms.server_name
Gilt für: SQL Server 2008 bis SQL Server 2014.
Der Name des Servers, auf dem sich das Basisobjekt befindet.
database_name
Der Name der Datenbank, auf der sich das Basisobjekt befindet. Wenn database_name nicht angegeben ist, wird der Name der aktuellen Datenbank verwendet.schema_name_2
Der Name des Schemas des Basisobjekts. Wenn schema_name nicht angegeben ist, wird das Standardschema des aktuellen Benutzers verwendet.object_name
Der Name des Basisobjekts, auf das das Synonym verweist.Die Windows Azure SQL-Datenbank unterstützt das aus drei Teilen bestehende Format database_name.[schema_name].object_name, wenn database_name die aktuelle Datenbank bzw. database_name tempdb ist und object_name mit # beginnt.
Hinweise
Das Basisobjekt muss zur Erstellungszeit des Synonyms nicht notwendigerweise vorhanden sein. SQL Server überprüft das Vorhandensein des Basisobjekts zur Laufzeit.
Synonyme können für die folgenden Objekttypen erstellt werden:
Assembly (CLR)-gespeicherte Prozeduren |
Assembly (CLR)-Tabellenwertfunktionen |
Assembly (CLR)-Skalarfunktionen |
Assembly (CLR)-Aggregatfunktionen |
Replikationsfilterprozedur |
Erweiterte gespeicherte Prozeduren |
SQL-Skalarfunktionen |
SQL-Tabellenwertfunktionen |
SQL-Inline-Tabellenwertfunktion |
Gespeicherte SQL-Prozeduren |
Sicht |
Table1 (Benutzerdefiniert) |
1 Enthält lokale und globale temporäre Tabellen
Vierteilige Namen für Funktionsbasisobjekte werden nicht unterstützt.
In dynamischem SQL können Synonyme erstellt und gelöscht werden. Außerdem kann auf sie verwiesen werden.
Berechtigungen
Zum Erstellen eines Synonyms in einem Schema muss ein Benutzer über die CREATE SYNONYM-Berechtigung verfügen und entweder der Besitzer des Schemas sein oder über die ALTER SCHEMA-Berechtigung verfügen.
Die CREATE SYNONYM-Berechtigung ist eine erteilbare Berechtigung.
Hinweis
Sie benötigen keine Berechtigung für das Basisobjekt, um die CREATE SYNONYM-Anweisung erfolgreich auszuführen, da alle Berechtigungsüberprüfungen für das Basisobjekt bis zur Laufzeit verzögert werden.
Beispiele
A.Erstellen eines Synonyms für ein lokales Objekt
Im folgenden Beispiel wird zunächst ein Synonym für das Basisobjekt, Product in der AdventureWorks2012-Datenbank, erstellt und dann das Synonym abgefragt.
USE tempdb;
GO
-- Create a synonym for the Product table in AdventureWorks2012.
CREATE SYNONYM MyProduct
FOR AdventureWorks2012.Production.Product;
GO
-- Query the Product table by using the synonym.
USE tempdb;
GO
SELECT ProductID, Name
FROM MyProduct
WHERE ProductID < 5;
GO
Dies ist das Resultset.
-----------------------
ProductID Name
----------- --------------------------
1 Adjustable Race
2 Bearing Ball
3 BB Ball Bearing
4 Headset Ball Bearings
(4 row(s) affected)
B.Erstellen eines Synonyms zu einem Remoteobjekt
Im folgenden Beispiel befindet sich das Basisobjekt, Contact, auf einem Remoteserver namens Server_Remote.
Gilt für: SQL Server 2008 bis SQL Server 2014. |
EXEC sp_addlinkedserver Server_Remote;
GO
USE tempdb;
GO
CREATE SYNONYM MyEmployee FOR Server_Remote.AdventureWorks2012.HumanResources.Employee;
GO
C.Erstellen eines Synonyms für eine benutzerdefinierte Funktion
Im folgenden Beispiel wird eine Funktion mit dem Namen dbo.OrderDozen erstellt, durch die Bestellmengen auf ein Dutzend erhöht werden. Im Beispiel wird dann das Synonym dbo.CorrectOrder für die dbo.OrderDozen-Funktion erstellt.
-- Creating the dbo.OrderDozen function
CREATE FUNCTION dbo.OrderDozen (@OrderAmt int)
RETURNS int
WITH EXECUTE AS CALLER
AS
BEGIN
IF @OrderAmt % 12 <> 0
BEGIN
SET @OrderAmt += 12 - (@OrderAmt % 12)
END
RETURN(@OrderAmt);
END;
GO
-- Using the dbo.OrderDozen function
DECLARE @Amt int;
SET @Amt = 15;
SELECT @Amt AS OriginalOrder, dbo.OrderDozen(@Amt) AS ModifiedOrder;
-- Create a synonym dbo.CorrectOrder for the dbo.OrderDozen function.
CREATE SYNONYM dbo.CorrectOrder
FOR dbo.OrderDozen;
GO
-- Using the dbo.CorrectOrder synonym.
DECLARE @Amt int;
SET @Amt = 15;
SELECT @Amt AS OriginalOrder, dbo.CorrectOrder(@Amt) AS ModifiedOrder;