CREATE SYNONYM (Transact-SQL)
Cria um novo sinônimo.
Sintaxe
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
}
Argumentos
schema_name_1
Especifica o esquema no qual o sinônimo é criado. Se schema não for especificado, o SQL Server usará o esquema padrão do usuário atual.synonym_name
É o nome do novo sinônimo.server_name
É o nome do servidor no qual o objeto base está localizado.database_name
É o nome do banco de dados no qual o objeto base está localizado. Se database_name não for especificado, será usado o nome do banco de dados atual.schema_name_2
É o nome do esquema do objeto base. Se schema_name não for especificado, será usado o esquema padrão do usuário atual.object_name
É o nome do objeto base que o sinônimo referencia.
Comentários
O objeto base não precisa existir no momento da criação do sinônimo. O SQL Server verifica a existência desse objeto em tempo de execução.
Podem ser criados sinônimos para os seguintes tipos de objetos:
Procedimento armazenado de assembly (CLR) |
Função com valor de tabela de assembly (CLR) |
Função escalar de assembly (CLR) |
Funções de agregação de assembly (CLR) |
Procedimento de filtro de replicação |
Procedimento armazenado estendido |
Função escalar SQL |
Função com valor de tabela SQL |
Função com valor de tabela embutida SQL |
Procedimento armazenado SQL |
Exibição |
Tabela1 (definida pelo usuário) |
1 Inclui tabelas temporárias locais e globais
Não há suporte para nomes de quatro partes para objetos base.
É possível criar, descartar e referenciar sinônimos em SQL dinâmico.
Permissões
Para criar um sinônimo em um determinado esquema, o usuário deve ter a permissão CREATE SYNONYM e ser proprietário do esquema ou ter a permissão ALTER SCHEMA.
A permissão CREATE SYNONYM pode ser concedida.
Observação |
---|
Você não precisa de permissão no objeto base para compilar a instrução CREATE SYNONYM, pois toda a verificação de permissão no objeto base é adiada até o tempo de execução. |
Exemplos
A. Criando um sinônimo para um objeto local
O exemplo a seguir cria um sinônimo para o objeto base, Product no banco de dados AdventureWorks2008R2, e, em seguida, consulta o sinônimo.
USE tempdb;
GO
-- Create a synonym for the Product table in AdventureWorks2008R2.
CREATE SYNONYM MyProduct
FOR AdventureWorks2008R2.Production.Product;
GO
-- Query the Product table by using the synonym.
USE tempdb;
GO
SELECT ProductID, Name
FROM MyProduct
WHERE ProductID < 5;
GO
Aqui está o conjunto de resultados.
-----------------------
ProductID Name
----------- --------------------------
1 Adjustable Race
2 Bearing Ball
3 BB Ball Bearing
4 Headset Ball Bearings
(4 row(s) affected)
B. Criando um sinônimo para objeto remoto
No exemplo a seguir, o objeto base, Contact, reside em um servidor remoto denominado Server_Remote.
EXEC sp_addlinkedserver Server_Remote;
GO
USE tempdb;
GO
CREATE SYNONYM MyEmployee FOR Server_Remote.AdventureWorks2008R2.HumanResources.Employee;
GO
C. Criando um sinônimo para uma função definida pelo usuário
O exemplo a seguir cria uma função chamada dbo.OrderDozen que aumenta o pedido para uma quantidade regular de doze unidades. Em seguida, o exemplo cria o sinônimo dbo.CorrectOrder para a função 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
Consulte também