Compartilhar via


Entendendo sinônimos

Um sinônimo é um objeto de banco de dados que atende aos seguintes propósitos:

  • Fornece um nome alternativo para outro objeto do banco de dados referido como o objeto base que pode existir em um servidor local ou remoto.

  • Fornece uma camada de abstração que protege um aplicativo cliente de alterações feitas no nome ou local do objeto base.

Por exemplo, considere a tabela Employee do banco de dados de exemplo AdventureWorks2008R2 localizado em um servidor denominado Server1. Para fazer referência a esta tabela em outro servidor, Server2, um aplicativo cliente precisa usar o nome de quatro partes Server1.AdventureWorks.HumanResources.Employee. Além disso, se o local da tabela for alterado, por exemplo, para outro servidor, o aplicativo cliente precisará ser modificado para refletir essa alteração.

Para resolver os dois problemas, é possível criar um sinônimo, EmpTable, no Server2 para a tabela Employee no Server1. Agora, o aplicativo cliente precisa usar apenas o nome de uma única parte, EmpTable, para fazer referência à tabela Employee. Além disso, se o local da tabela Employee for alterado, você precisará modificar o sinônimo, EmpTable, para apontar para o novo local da tabela Employee. Como não existe nenhuma instrução ALTER SYNONYM, primeiro descarte o sinônimo, EmpTable, e recrie-o com o mesmo nome, mas aponte-o para o novo local de Employee.

Um sinônimo pertence a um esquema e, como outros objetos de um esquema, seu nome precisa ser exclusivo. É possível criar sinônimos para os seguintes objetos de banco de dados:

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 SQL escalar

Função SQL com valor de tabela

Função SQL com valor de tabela embutida

Procedimento armazenado SQL

Exibição

Tabela1 (definida pelo usuário)

1 inclui tabelas temporárias locais e globais

ObservaçãoObservação

Nomes de quatro partes de objetos base de função não têm suporte.

Um sinônimo não pode ser o objeto base de outro sinônimo e um sinônimo não pode fazer referência a uma função de agregação definida pelo usuário.

A associação entre um sinônimo e seu objeto base é feita apenas pelo nome. Toda verificação de existência, tipo e permissões no objeto base é adiada até o tempo de execução. Portanto o objeto base pode ser modificado, descartado ou descartado e substituído por outro objeto que tenha o mesmo nome que o objeto base original. Por exemplo, considere um sinônimo, MyContacts, que faz referência à tabela Person.Person no Adventure Works. Se a tabela Person for descartada e substituída por uma exibição chamada Person.Person, MyContacts fará referência à exibição Person.Person.

Referências a sinônimos não são associadas a esquemas. Portanto, um sinônimo pode ser descartado a qualquer momento. No entanto, ao descartar um sinônimo, você corre o risco de deixar referências pendentes ao sinônimo descartado. Essas referências serão localizadas apenas em tempo de execução.

Sinônimos e esquemas

Se você tiver um esquema padrão do qual você não é o proprietário e desejar criar um sinônimo, deverá qualificar o nome do sinônimo com o nome de um esquema que seja de sua propriedade. Por exemplo, se você possuir um esquema x, mas y for seu esquema padrão e você usar a instrução CREATE SYNONYM, deverá prefixar o nome do sinônimo com o esquema x, em vez de nomear o sinônimo usando um nome de uma única parte. Para obter mais informações sobre como criar sinônimos, consulte CREATE SYNONYM (Transact-SQL).

Concedendo permissões em um sinônimo

Apenas os proprietários de sinônimos, membros de db_owner, ou membros de db_ddladmin podem conceder permissão em um sinônimo.

É possível emitir GRANT, DENY, REVOKE de todas ou de qualquer uma das seguintes permissões em um sinônimo:

CONTROL

DELETE

EXECUTE

INSERT

SELECT

TAKE OWNERSHIP

UPDATE

VIEW DEFINITION