CREATE SYNONYM (Transact-SQL)

Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance

Crea un nuevo sinónimo.

Convenciones de sintaxis de Transact-SQL

Sintaxis

Sintaxis de SQL Server:

CREATE SYNONYM [ schema_name_1. ] synonym_name FOR <object>

<object> ::=
{
    [
        server_name. [ database_name ] . [ schema_name_2 ] .
        | database_name. [ schema_name_2 ] .
        | schema_name_2.
    ]
    object_name
}

Sintaxis de Azure SQL Database:

CREATE SYNONYM [ schema_name_1. ] synonym_name FOR <object>

<object> ::=
{
    [ database_name. [ schema_name_2 ] . | schema_name_2. ] object_name
}

Argumentos

schema_name_1

Especifica el esquema en el que se crea el sinónimo. Si schema_name no se especifica, SQL Server utiliza el esquema predeterminado del usuario actual.

synonym_name

El nombre del nuevo sinónimo.

server_name

El nombre del servidor en el que se encuentra el objeto base.

database_name

El nombre de la base de datos en la que se encuentra el objeto base. Si database_name no se especifica, se utiliza el nombre de la base de datos actual.

schema_name_2

El nombre del esquema del objeto base. Si no se especifica schema_name, se utilizará el esquema predeterminado del usuario actual.

object_name

El nombre del objeto base al que hace referencia el sinónimo.

Nota:

Azure SQL Database admite el formato de nombre de tres partes database_name.[schema_name].object_name cuando database_name es la base de datos actual, o database_name es tempdb y object_name empieza por #.

Observaciones

No es necesario que el objeto base exista en el momento de crear el sinónimo. SQL Server comprueba la existencia del objeto base en tiempo de ejecución.

  • Se pueden crear sinónimos para los siguientes tipos de objetos:

    • Procedimiento almacenado del ensamblado (CLR)
    • Función con valores de tabla del ensamblado (CLR)
    • Función escalar del ensamblado (CLR)
    • Función de agregado del ensamblado (CLR)
    • Procedimiento de filtro de replicación
    • Procedimiento almacenado extendido
    • Función escalar T-SQL
    • Función con valores de tabla T-SQL
    • Función con valores de tabla alineado T-SQL
    • Procedimiento almacenado T-SQL
    • Tabla (definida por el usuario, incluye tablas temporales locales y globales)
    • Ver
  • No se admiten nombres de cuatro partes para objetos base de función.

  • Los sinónimos se pueden crear, eliminar y referenciar en T-SQL dinámico.

  • Los sinónimos son específicos de la base de datos y no se puede acceder a ellos desde otras bases de datos.

Permisos

Para crear un sinónimo en un esquema determinado, un usuario debe tener permiso CREATE SYNONYM y ser propietario del esquema o tener permiso ALTER SCHEMA.

El permiso CREATE SYNONYM es un permiso concedible.

Nota

No necesita permiso sobre el objeto base para compilar correctamente la instrucción CREATE SYNONYM, porque toda la comprobación de permisos sobre el objeto base se aplaza hasta el tiempo de ejecución.

Ejemplos

A. Creación de un sinónimo para un objeto local

En el ejemplo siguiente, primero se crea un sinónimo para el objeto base Product en la base de datos AdventureWorks2022 y, después, se consulta el sinónimo.

-- Create a synonym for the Product table in AdventureWorks2022.
CREATE SYNONYM MyProduct
FOR AdventureWorks2022.Production.Product;
GO

-- Query the Product table by using the synonym.
SELECT ProductID, Name
FROM MyProduct
WHERE ProductID < 5;
GO

Este es el conjunto de resultados.

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

(4 row(s) affected)

B. Creación de un sinónimo de un objeto remoto

En el ejemplo siguiente, el objeto base (Contact) reside en un servidor remoto denominado Server_Remote.

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

C. Creación de un sinónimo para una función definida por el usuario

En el ejemplo siguiente, se crea una función denominada dbo.OrderDozen que aumenta los pedidos a 12 unidades. A continuación, en el ejemplo se crea el sinónimo dbo.CorrectOrder para la función dbo.OrderDozen.

-- 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én

Pasos siguientes