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

SI APPLICA A: sìSQL Server (a partire dalla versione 2008) sìDatabase SQL di Azure noAzure SQL Data Warehouse noParallel Data Warehouse APPLIES TO: yesSQL Server (starting with 2008) yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Crea un nuovo sinonimo.Creates a new synonym.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintassiSyntax

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

ArgomentiArguments

schema_name_1schema_name_1
Specifica lo schema in cui viene creato il sinonimo.Specifies the schema in which the synonym is created. Se lo schema viene omesso, SQL ServerSQL Server usa lo schema predefinito dell'utente corrente.If schema is not specified, SQL ServerSQL Server uses the default schema of the current user.

synonym_namesynonym_name
Nome del nuovo sinonimo.Is the name of the new synonym.

server_nameserver_name
Si applica a: SQL Server 2008SQL Server 2008 tramite SQL Server 2017SQL Server 2017.Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

Indica il nome del server in cui è archiviato l'oggetto di base.Is the name of the server on which base object is located.

database_namedatabase_name
Indica il nome del database in cui è archiviato l'oggetto di base.Is the name of the database in which the base object is located. Se database_name viene omesso, viene usato il nome del database corrente.If database_name is not specified, the name of the current database is used.

schema_name_2schema_name_2
Nome dello schema dell'oggetto di base.Is the name of the schema of the base object. Se schema_name viene omesso, viene usato lo schema predefinito dell'utente corrente.If schema_name is not specified the default schema of the current user is used.

object_nameobject_name
Nome dell'oggetto di base a cui fa riferimento il sinonimo.Is the name of the base object that the synonym references.

Il database SQL di Windows Azure supporta il formato del nome in tre parti, nome_database.[nome_schema].nome_oggetto, quando nome_database è il database corrente oppure nome_database è tempdb e nome_oggetto inizia con #.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

Non è necessario che l'oggetto di base sia esistente in fase di creazione del sinonimo.The base object need not exist at synonym create time. SQL ServerSQL Server verifica l'esistenza dell'oggetto di base in fase di esecuzione. checks for the existence of the base object at run time.

È possibile creare sinonimi per i tipi di oggetti seguenti:Synonyms can be created for the following types of objects:

Stored procedure di assembly (CLR)Assembly (CLR) Stored Procedure Funzione con valori di tabella di assembly (CLR)Assembly (CLR) Table-valued Function
Funzione scalare di assembly (CLR)Assembly (CLR) Scalar Function Funzioni aggregate di aggregazione assembly (CLR)Assembly Aggregate (CLR) Aggregate Functions
Procedura di filtro della replicaReplication-filter-procedure Stored procedure estesaExtended Stored Procedure
Funzione scalare SQLSQL Scalar Function Funzione con valori di tabella di SQLSQL Table-valued Function
Funzione SQL inline con valori di tabellaSQL Inline-table-valued Function Stored procedure di SQLSQL Stored Procedure
VistaView Tabella1 (definita dall'utente)Table1 (User-defined)

1 Include tabelle temporanee globali e locali1 Includes local and global temporary tables

I nomi composti da quattro parti non sono supportati per gli oggetti funzione di base.Four-part names for function base objects are not supported.

È possibile creare, eliminare e fare riferimento ai sinonimi in SQL dinamico.Synonyms can be created, dropped and referenced in dynamic SQL.

PermissionsPermissions

Per poter creare un sinonimo in un determinato schema, un utente deve disporre dell'autorizzazione CREATE SYNONYM, oltre a disporre della proprietà dello schema o dell'autorizzazione ALTER SCHEMA.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.

L'autorizzazione CREATE SYNONYM è un'autorizzazione che può essere concessa.The CREATE SYNONYM permission is a grantable permission.

Nota

Per compilare l'istruzione CREATE SYNONYM non è necessaria l'autorizzazione sull'oggetto di base, poiché tutti i controlli delle autorizzazioni sull'oggetto di base sono rimandati fino alla fase di esecuzione.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.

EsempiExamples

A.A. Creazione di un sinonimo per un oggetto localeCreating a synonym for a local object

Nell'esempio seguente viene prima creato un sinonimo per l'oggetto di base Product nel database AdventureWorks2012, quindi viene eseguita una query sul sinonimo.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  

Set di risultati: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. Creazione di un sinonimo per l'oggetto remotoCreating a synonym to remote object

Nell'esempio seguente, l'oggetto di base, Contact, è contenuto in un server remoto denominato Server_Remote.In the following example, the base object, Contact, resides on a remote server named Server_Remote.

Si applica a: SQL Server 2008SQL Server 2008 tramite 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. Creazione di un sinonimo per una funzione definita dall'utenteCreating a synonym for a user-defined function

Nell'esempio seguente viene creata una funzione denominata dbo.OrderDozen che aumenta le quantità degli ordini a una dozzina di unità uniformi.The following example creates a function named dbo.OrderDozen that increases order amounts to an even dozen units. Viene quindi creato il sinonimo dbo.CorrectOrder per la funzione dbo.OrderDozen.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;  

Vedere ancheSee Also

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