CREATE SYNONYM (Transact-SQL)
Crea un nuevo sinónimo.
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) |
Funciones de agregado del ensamblado (CLR) |
|
Procedimiento de filtro de replicación |
Procedimiento almacenado extendido |
|
Función escalar de SQL |
Función SQL con valores de tabla |
|
Función SQL con valores de tabla insertados |
Procedimiento almacenado de SQL |
|
Vista |
Tabla1 (definida por el usuario) |
1 Incluye tablas temporales locales y globales
No pueden usarse nombres de cuatro partes para objetos base de función.
Es posible crear, quitar y hacer referencia a sinónimos en SQL dinámico.
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.
El permiso CREATE SYNONYM se puede conceder.
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. |
A. Crear 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 AdventureWorks y, después, se consulta el sinónimo.
USE tempdb; GO -- Create a synonym for the Product table in AdventureWorks. CREATE SYNONYM MyProduct FOR AdventureWorks.Production.Product; GO -- Query the Product table by using the synonym. USE tempdb; GO SELECT ProductID, Name FROM MyProduct WHERE ProductID < 5; GO
Éste es el conjunto de resultados.
-----------------------
ProductID Name
----------- --------------------------
1 Adjustable Race
2 Bearing Ball
3 BB Ball Bearing
4 Headset Ball Bearings
(4 filas afectadas)
B. Crear 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.AdventureWorks.HumanResources.Employee; GO
C. Crear 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 una cantidad uniforme de doce 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
