CREATE SYNONYM (Transact-SQL)
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure
Cria um novo sinônimo.
Convenções de sintaxe de Transact-SQL
Sintaxe
Sintaxe do 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
}
Sintaxe do Banco de Dados SQL do Azure:
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 o esquema no qual o sinônimo é criado. Se schema_name 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, o nome do banco de dados atual será usado.
schema_name_2
É o nome do esquema do objeto base. Se schema_name não for especificado, o esquema padrão do usuário atual será usado.
object_name
O nome do objeto base que o sinônimo referencia.
Observação
O Banco de Dados SQL do Azure dá suporte ao formato de nome database_name.[schema_name].object_name
de três partes quando database_name é o banco de dados atual ou o database_name é tempdb
e o object_name começa com #
.
Comentários
O objeto base não precisa existir no momento da criação do sinônimo. O SQL Server verifica a existência do objeto base 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 T-SQL
- SQL_TABLE_VALUED_FUNCTION
- SQL_INLINE_TABLE_VALUED_FUNCTION
- Procedimento armazenado T-SQL
- Tabela (definida pelo usuário, inclui tabelas temporárias locais e globais)
- Exibir
Não há suporte para nomes de quatro partes para objetos base de função.
É possível criar, descartar e referenciar sinônimos em T-SQL dinâmico.
Os sinônimos são específicos do banco de dados e não podem ser acessados por outros bancos de dados.
Permissões
Para criar um sinônimo em um determinado esquema, o usuário deve ter a permissão CREATE SYNONYM
e ou 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. Criar um sinônimo para um objeto local
O exemplo a seguir cria primeiro um sinônimo para o objeto base, Product
, no banco de dados AdventureWorks2022
e, em seguida, consulta o 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
Veja a seguir 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. Criar 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.AdventureWorks2022.HumanResources.Employee;
GO
C. Criar um sinônimo para uma função definida pelo usuário
O exemplo a seguir cria uma função chamada dbo.OrderDozen
que aumenta as quantidades dos pedidos para 12 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;
Confira também
- DROP SYNONYM (Transact-SQL)
- EVENTDATA (Transact-SQL)
- GRANT (Transact-SQL)
- Sinônimos (Mecanismo de Banco de Dados)