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
- DROP SYNONYM (Transact-SQL)
- EVENTDATA (Transact-SQL)
- GRANT (Transact-SQL)
- Usar sinónimos (motor de base de datos)