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

Próximas etapas