CREATE SYNONYM (Transact-SQL)CREATE SYNONYM (Transact-SQL)

ESTE TÓPICO APLICA-SE A:simSQL Server (a partir de 2008)simBanco de Dados SQL do Microsoft AzurenãoAzure SQL Data Warehouse nãoParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Cria um novo sinônimo.Creates a new synonym.

Ícone de link do tópico Convenções da sintaxe Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax

-- SQL Server Syntax  

CREATE SYNONYM [ schema_name_1. ] synonym_name FOR <object>  

<object> :: =  
{  
    [ server_name.[ database_name ] . [ schema_name_2 ]. object_name   
  | database_name . [ schema_name_2 ].| schema_name_2. ] object_name  
}  
-- Windows Azure SQL Database Syntax  

CREATE SYNONYM [ schema_name_1. ] synonym_name FOR < object >  

< object > :: =  
{  
    [database_name. [ schema_name_2 ].| schema_name_2. ] object_name  
}  

ArgumentosArguments

schema_name_1schema_name_1
Especifica o esquema no qual o sinônimo é criado.Specifies the schema in which the synonym is created. Se esquema não for especificado, SQL ServerSQL Server usa o esquema padrão do usuário atual.If schema is not specified, SQL ServerSQL Server uses the default schema of the current user.

synonym_namesynonym_name
É o nome do novo sinônimo.Is the name of the new synonym.

server_nameserver_name
Aplica-se a: do SQL Server 2008SQL Server 2008 ao SQL Server 2017SQL Server 2017.Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

É o nome do servidor no qual o objeto base está localizado.Is the name of the server on which base object is located.

database_namedatabase_name
É o nome do banco de dados no qual o objeto base está localizado.Is the name of the database in which the base object is located. Se database_name não for especificado, o nome do banco de dados atual será usado.If database_name is not specified, the name of the current database is used.

schema_name_2schema_name_2
É o nome do esquema do objeto base.Is the name of the schema of the base object. Se schema_name não for especificado o esquema padrão do usuário atual será usado.If schema_name is not specified the default schema of the current user is used.

object_nameobject_name
É o nome do objeto base que o sinônimo referencia.Is the name of the base object that the synonym references.

O Banco de Dados SQL do Windows Azure oferece suporte ao formato de nome de três partes database_name.[schema_name].object_name quando o database_name é o banco de dados atual ou o database_name é tempdb e o object_name começa com #.Windows Azure SQL Database supports the three-part name format database_name.[schema_name].object_name when the database_name is the current database or the database_name is tempdb and the object_name starts with #.

ComentáriosRemarks

O objeto base não precisa existir no momento da criação do sinônimo.The base object need not exist at synonym create time. O SQL ServerSQL Server verifica a existência do objeto base em tempo de execução. SQL ServerSQL Server checks for the existence of the base object at run time.

Podem ser criados sinônimos para os seguintes tipos de objetos:Synonyms can be created for the following types of objects:

Procedimento armazenado de assembly (CLR)Assembly (CLR) Stored Procedure Função com valor de tabela do assembly (CLR)Assembly (CLR) Table-valued Function
Função escalar de assembly (CLR)Assembly (CLR) Scalar Function Funções de agregação de agregação (CLR) do assemblyAssembly Aggregate (CLR) Aggregate Functions
Procedimento de filtro de replicaçãoReplication-filter-procedure Procedimento armazenado estendidoExtended Stored Procedure
Função escalar SQLSQL Scalar Function Função com valor de tabela SQLSQL Table-valued Function
Função com valor de tabela embutida SQLSQL Inline-table-valued Function Procedimento armazenado SQLSQL Stored Procedure
ExibiçãoView Tabela1 (definido pelo usuário)Table1 (User-defined)

1 inclui tabelas temporárias locais e globais1 Includes local and global temporary tables

Não há suporte para nomes de quatro partes para objetos base de função.Four-part names for function base objects are not supported.

É possível criar, descartar e referenciar sinônimos em SQL dinâmico.Synonyms can be created, dropped and referenced in dynamic SQL.

PermissõesPermissions

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.To create a synonym in a given schema, a user must have CREATE SYNONYM permission and either own the schema or have ALTER SCHEMA permission.

A permissão CREATE SYNONYM pode ser concedida.The CREATE SYNONYM permission is a grantable permission.

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.You do not need permission on the base object to successfully compile the CREATE SYNONYM statement, because all permission checking on the base object is deferred until run time.

ExemplosExamples

A.A. Criando um sinônimo para um objeto localCreating a synonym for a local object

O exemplo a seguir cria primeiro um sinônimo para o objeto base, Product, no banco de dados AdventureWorks2012 e, em seguida, consulta o sinônimo.The following example first creates a synonym for the base object, Product in the AdventureWorks2012 database, and then queries the synonym.

-- Create a synonym for the Product table in AdventureWorks2012.  
CREATE SYNONYM MyProduct  
FOR AdventureWorks2012.Production.Product;  
GO  

-- Query the Product table by using the synonym.  
SELECT ProductID, Name   
FROM MyProduct  
WHERE ProductID < 5;  
GO  

Aqui está o conjunto de resultados.Here is the result set.

-----------------------

ProductID Name

----------- --------------------------

1 Adjustable Race

2 Bearing Ball

3 BB Ball Bearing

4 Headset Ball Bearings

(4 row(s) affected)

B.B. Criando um sinônimo para objeto remotoCreating a synonym to remote object

No exemplo a seguir, o objeto base, Contact, reside em um servidor remoto denominado Server_Remote.In the following example, the base object, Contact, resides on a remote server named Server_Remote.

Aplica-se a: do SQL Server 2008SQL Server 2008 ao SQL Server 2017SQL Server 2017.Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

EXEC sp_addlinkedserver Server_Remote;  
GO  
USE tempdb;  
GO  
CREATE SYNONYM MyEmployee FOR Server_Remote.AdventureWorks2012.HumanResources.Employee;  
GO  

C.C. Criando um sinônimo para uma função definida pelo usuárioCreating a synonym for a user-defined function

O exemplo a seguir cria uma função chamada dbo.OrderDozen que aumenta o pedido para uma quantidade regular de doze unidades.The following example creates a function named dbo.OrderDozen that increases order amounts to an even dozen units. Em seguida, o exemplo cria o sinônimo dbo.CorrectOrder para a função dbo.OrderDozen.The example then creates the synonym dbo.CorrectOrder for the dbo.OrderDozen function.

-- 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émSee Also

Remover sinônimo ( Transact-SQL ) DROP SYNONYM (Transact-SQL)
GRANT (Transact-SQL) GRANT (Transact-SQL)
EVENTDATA (Transact-SQL)EVENTDATA (Transact-SQL)