CREATE SYNONYM (Transact-SQL)CREATE SYNONYM (Transact-SQL)

GILT FÜR: jaSQL ServerjaAzure SQL-DatenbankneinAzure SQL Data Warehouse neinParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Erstellt ein neues Synonym.Creates a new synonym.

Themenlinksymbol Transact-SQL Syntax Conventions (Transact-SQL-Syntaxkonventionen)Topic link icon Transact-SQL Syntax Conventions

SyntaxSyntax

-- 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  
}  
-- Azure SQL Database Syntax  
  
CREATE SYNONYM [ schema_name_1. ] synonym_name FOR < object >  
  
< object > :: =  
{  
    [database_name. [ schema_name_2 ].| schema_name_2. ] object_name  
}  

ArgumenteArguments

schema_name_1schema_name_1
Gibt das Schema an, in dem das Synonym erstellt wird.Specifies the schema in which the synonym is created. Wird schema nicht angegeben ist, verwendet SQL ServerSQL Server das Standardschema des aktuellen Benutzers.If schema is not specified, SQL ServerSQL Server uses the default schema of the current user.

synonym_namesynonym_name
Der Name des neuen Synonyms.Is the name of the new synonym.

server_nameserver_name
Gilt für: SQL Server 2008SQL Server 2008 bis SQL Server 2017SQL Server 2017.Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

Der Name des Servers, auf dem sich das Basisobjekt befindet.Is the name of the server on which base object is located.

database_namedatabase_name
Der Name der Datenbank, auf der sich das Basisobjekt befindet.Is the name of the database in which the base object is located. Wenn database_name nicht angegeben ist, wird der Name der aktuellen Datenbank verwendet.If database_name is not specified, the name of the current database is used.

schema_name_2schema_name_2
Der Name des Schemas des Basisobjekts.Is the name of the schema of the base object. Wenn schema_name nicht angegeben ist, wird das Standardschema des aktuellen Benutzers verwendet.If schema_name is not specified the default schema of the current user is used.

object_nameobject_name
Der Name des Basisobjekts, auf das das Synonym verweist.Is the name of the base object that the synonym references.

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.Windows Azure SQL Database supports the three-part name format database_name.[schema_name].object_name when the database_name is the current database or the database_name is tempdb and the object_name starts with #.

RemarksRemarks

Das Basisobjekt muss zur Erstellungszeit des Synonyms nicht notwendigerweise vorhanden sein.The base object need not exist at synonym create time. SQL ServerSQL Server überprüft das Vorhandensein des Basisobjekts zur Laufzeit. checks for the existence of the base object at run time.

Synonyme können für die folgenden Objekttypen erstellt werden:Synonyms can be created for the following types of objects:

Assembly (CLR)-gespeicherte ProzedurenAssembly (CLR) Stored Procedure Assembly (CLR)-TabellenwertfunktionenAssembly (CLR) Table-valued Function
Assembly (CLR)-SkalarfunktionenAssembly (CLR) Scalar Function Assembly (CLR)-AggregatfunktionenAssembly Aggregate (CLR) Aggregate Functions
ReplikationsfilterprozedurReplication-filter-procedure Erweiterte gespeicherte ProzedurenExtended Stored Procedure
SQL-SkalarfunktionenSQL Scalar Function SQL-TabellenwertfunktionSQL Table-valued Function
SQL-Inline-TabellenwertfunktionSQL Inline-table-valued Function Gespeicherte SQL-ProzedurenSQL Stored Procedure
AnzeigenView Tabelle1 (Benutzerdefiniert)Table1 (User-defined)

1 Enthält lokale und globale temporäre Tabellen1 Includes local and global temporary tables

Vierteilige Namen für Funktionsbasisobjekte werden nicht unterstützt.Four-part names for function base objects are not supported.

In dynamischem SQL können Synonyme erstellt und gelöscht werden. Außerdem kann auf sie verwiesen werden.Synonyms can be created, dropped and referenced in dynamic SQL.

BerechtigungenPermissions

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.To create a synonym in a given schema, a user must have CREATE SYNONYM permission and either own the schema or have ALTER SCHEMA permission.

Die CREATE SYNONYM-Berechtigung ist eine erteilbare Berechtigung.The CREATE SYNONYM permission is a grantable permission.

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.You do not need permission on the base object to successfully compile the CREATE SYNONYM statement, because all permission checking on the base object is deferred until run time.

BeispieleExamples

A.A. Erstellen eines Synonyms für ein lokales ObjektCreating a synonym for a local object

Im folgenden Beispiel wird zunächst ein Synonym für das Basisobjekt, Product in der AdventureWorks2012-Datenbank, erstellt und dann das Synonym abgefragt.The following example first creates a synonym for the base object, Product in the AdventureWorks2012 database, and then queries the synonym.

-- 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.  
SELECT ProductID, Name   
FROM MyProduct  
WHERE ProductID < 5;  
GO  

Im Folgenden finden Sie das Resultset.Here is the result set.

----------------------- 
ProductID   Name 
----------- -------------------------- 
1           Adjustable Race 
2           Bearing Ball 
3           BB Ball Bearing 
4           Headset Ball Bearings 

(4 row(s) affected)

B.B. Erstellen eines Synonyms zu einem RemoteobjektCreating a synonym to remote object

Im folgenden Beispiel befindet sich das Basisobjekt, Contact, auf einem Remoteserver namens Server_Remote.In the following example, the base object, Contact, resides on a remote server named Server_Remote.

Gilt für: SQL Server 2008SQL Server 2008 bis SQL Server 2017SQL Server 2017.Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

EXEC sp_addlinkedserver Server_Remote;  
GO  
USE tempdb;  
GO  
CREATE SYNONYM MyEmployee FOR Server_Remote.AdventureWorks2012.HumanResources.Employee;  
GO  

C.C. Erstellen eines Synonyms für eine benutzerdefinierte FunktionCreating a synonym for a user-defined function

Im folgenden Beispiel wird eine Funktion mit dem Namen dbo.OrderDozen erstellt, durch die Bestellmengen auf ein Dutzend erhöht werden.The following example creates a function named dbo.OrderDozen that increases order amounts to an even dozen units. Im Beispiel wird dann das Synonym dbo.CorrectOrder für die dbo.OrderDozen-Funktion erstellt.The example then creates the synonym dbo.CorrectOrder for the dbo.OrderDozen function.

-- 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;  

Weitere Informationen finden Sie unterSee Also

DROP SYNONYM (Transact-SQL) DROP SYNONYM (Transact-SQL)
GRANT (Transact-SQL) GRANT (Transact-SQL)
EVENTDATA (Transact-SQL)EVENTDATA (Transact-SQL)