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

ESTE TEMA SE APLICA A:síSQL Server (a partir de 2008)síAzure SQL DatabasenoAzure SQL Data Warehouse noAlmacenamiento de datos paralelos THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Crea un nuevo sinónimo.Creates a new synonym.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax

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

ArgumentosArguments

schema_name_1schema_name_1
Especifica el esquema en el que se crea el sinónimo.Specifies the schema in which the synonym is created. Si esquema no se especifica, SQL ServerSQL Server utiliza el esquema predeterminado del usuario actual.If schema is not specified, SQL ServerSQL Server uses the default schema of the current user.

synonym_namesynonym_name
Es el nombre del nuevo sinónimo.Is the name of the new synonym.

nombre_servidorserver_name
Se aplica a: desde SQL Server 2008SQL Server 2008 hasta SQL Server 2017SQL Server 2017.Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

Es el nombre del servidor donde se encuentra el objeto base.Is the name of the server on which base object is located.

database_namedatabase_name
Es el nombre de la base de datos donde se encuentra el objeto base.Is the name of the database in which the base object is located. Si database_name no se especifica, se usa el nombre de la base de datos actual.If database_name is not specified, the name of the current database is used.

schema_name_2schema_name_2
Es el nombre del esquema del objeto base.Is the name of the schema of the base object. Si schema_name no se especifica se usa el esquema predeterminado del usuario actual.If schema_name is not specified the default schema of the current user is used.

object_nameobject_name
Es el nombre del objeto base al que hace referencia el sinónimo.Is the name of the base object that the synonym references.

SQL Database de Microsoft Azure admite el formato de nombre de tres partes nombre_basededatos.[nombre_esquema].nombre_objeto cuando nombre_basededatos es la base de datos actual o tempdb y nombre_objeto comienza 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 #.

ComentariosRemarks

No es necesario que el objeto base exista en el momento de crear el sinónimo.The base object need not exist at synonym create time. SQL ServerSQL Server comprueba la existencia del objeto base en tiempo de ejecución. checks for the existence of the base object at run time.

Se pueden crear sinónimos para los siguientes tipos de objetos:Synonyms can be created for the following types of objects:

Procedimiento almacenado del ensamblado (CLR)Assembly (CLR) Stored Procedure Función con valores de tabla de ensamblado (CLR)Assembly (CLR) Table-valued Function
Función escalar del ensamblado (CLR)Assembly (CLR) Scalar Function Funciones de agregado del ensamblado (CLR)Assembly Aggregate (CLR) Aggregate Functions
Procedimiento de filtro de replicaciónReplication-filter-procedure Procedimiento almacenado extendidoExtended Stored Procedure
Función escalar de SQLSQL Scalar Function Función con valores de tabla SQLSQL Table-valued Function
Función SQL con valores de tabla insertadosSQL Inline-table-valued Function Procedimiento almacenado de SQLSQL Stored Procedure
VerView Tabla1 (definido por el usuario)Table1 (User-defined)

1 incluye tablas temporales locales y globales1 Includes local and global temporary tables

No pueden usarse nombres de cuatro partes para objetos base de función.Four-part names for function base objects are not supported.

Es posible crear, quitar y hacer referencia a sinónimos en SQL dinámico.Synonyms can be created, dropped and referenced in dynamic SQL.

PermissionsPermissions

Para crear un sinónimo en un esquema determinado, el usuario debe tener el permiso CREATE SYNONYM y ser propietario del esquema o tener el permiso 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.

El permiso CREATE SYNONYM se puede conceder.The CREATE SYNONYM permission is a grantable permission.

Nota

No se necesitan permisos en el objeto base para compilar correctamente la instrucción CREATE SYNONYM, porque la comprobación de los permisos para el objeto base no se realiza hasta el momento de la ejecución.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.

EjemplosExamples

A.A. Crear un sinónimo para un objeto localCreating a synonym for a local object

En el ejemplo siguiente, primero se crea un sinónimo para el objeto base Product en la base de datos AdventureWorks2012 y, después, se consulta el sinónimo.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  

El conjunto de resultados es el siguiente.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. Crear un sinónimo de un objeto remotoCreating a synonym to remote object

En el ejemplo siguiente, el objeto base (Contact) reside en un servidor remoto denominado Server_Remote.In the following example, the base object, Contact, resides on a remote server named Server_Remote.

Se aplica a: desde SQL Server 2008SQL Server 2008 hasta 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. Crear un sinónimo para una función definida por el usuarioCreating a synonym for a user-defined function

En el ejemplo siguiente, se crea una función denominada dbo.OrderDozen que aumenta los pedidos a una cantidad uniforme de doce unidades.The following example creates a function named dbo.OrderDozen that increases order amounts to an even dozen units. A continuación, en el ejemplo se crea el sinónimo dbo.CorrectOrder para la función 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;  

Vea tambiénSee Also

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