Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Um sinônimo é um objeto de banco de dados que atende às seguintes finalidades:
Fornece um nome alternativo para outro objeto de banco de dados, conhecido como objeto base, que pode existir em um servidor local ou remoto.
Fornece uma camada de abstração que protege um aplicativo cliente contra alterações feitas no nome ou local do objeto base.
Por exemplo, considere a tabela Employee da Adventure Works, localizada em um servidor chamado Server1. Para fazer referência a essa tabela de outro servidor, o Server2, um aplicativo cliente teria que usar o nome de quatro partes Server1.AdventureWorks.Person.Employee. Além disso, se o local da tabela fosse alterado, por exemplo, para outro servidor, o aplicativo cliente teria que ser modificado para refletir essa alteração.
Para resolver esses dois problemas, você pode criar um sinônimo, EmpTable, no Server2 para a tabela Employee no Server1. Agora, o aplicativo cliente só precisa usar o nome de parte única, EmpTable, para fazer referência à tabela Employee . Além disso, se o local da tabela Funcionário for alterado, você precisará modificar o sinônimo, EmpTable, para apontar para o novo local da tabela Funcionário . Como não há nenhuma instrução ALTER SYNONYM, primeiro você precisa remover o sinônimo, EmpTable e, em seguida, recriar o sinônimo usando o mesmo nome, mas apontar o sinônimo para a nova localização de Funcionário.
Um sinônimo pertence a um esquema e, como outros objetos em um esquema, o nome de um sinônimo deve ser exclusivo. Você pode criar sinônimos para os seguintes objetos de banco de dados:
| Procedimento armazenado do ASSEMBLY (CLR) | Função com valor de tabela clr (assembly) |
| Função escalar assembly (CLR) | Funções de agregação do Assembly CLR |
| Replication-filter-procedure | Procedimento armazenado estendido |
| Função escalar SQL | Função com valor de tabela SQL |
| Função embutida de valor de tabela no SQL | Procedimento armazenado do SQL |
| Visualizar | Tabela1 (definida pelo usuário) |
1 Inclui tabelas temporárias locais e globais
Observação
Não há suporte para nomes de quatro partes para objetos base de função.
Um sinônimo não pode ser o objeto base de outro sinônimo e um sinônimo não pode referenciar uma função de agregação definida pelo usuário.
A associação entre um sinônimo e seu objeto base é apenas pelo nome. Toda a existência, tipo e permissões de verificação no objeto base são adiadas até o tempo de execução. Portanto, o objeto base pode ser modificado, descartado ou descartado e substituído por outro objeto que tem o mesmo nome que o objeto base original. Por exemplo, considere um sinônimo, MyContacts, que faz referência à tabela Person.Contact no Adventure Works. Se a tabela Contato for descartada e substituída por uma visualização chamada Person.Contact, MyContacts agora referencia a visualização Person.Contact.
As referências a sinônimos não estão associadas ao esquema. Portanto, um sinônimo pode ser descartado a qualquer momento. No entanto, ao remover um sinônimo, você corre o risco de deixar referências soltas para o sinônimo que foi removido. Essas referências só serão encontradas em tempo de execução.
Sinônimos e esquemas
Se você tiver um esquema padrão que não possui e quiser criar um sinônimo, deverá qualificar o nome do sinônimo com o nome de um esquema que você possui. Por exemplo, se você possui um esquema x, mas y é o esquema padrão e usa a instrução CREATE SYNONYM, você deve prefixar o nome do sinônimo com o esquema x, em vez de nomear o sinônimo usando um nome de parte única. Para obter mais informações sobre como criar sinônimos, consulte CREATE SYNONYM (Transact-SQL).
Concedendo permissões em um sinônimo
Somente proprietários de sinônimos, membros de db_owner ou membros de db_ddladmin podem conceder permissão em um sinônimo.
Você pode CONCEDER, NEGAR, REVOGAR todas ou qualquer uma das seguintes permissões em um sinônimo:
| CONTROLE | EXCLUIR |
| EXECUTAR | INSERIR |
| SELECIONAR | ASSUMIR RESPONSABILIDADE |
| ATUALIZAÇÃO | DEFINIÇÃO DE EXIBIÇÃO |
Usando sinônimos
Você pode usar sinônimos no lugar de seu objeto base referenciado em várias instruções SQL e contextos de expressão. A tabela a seguir contém uma lista dessas instruções e contextos de expressão:
| SELECIONAR | INSERIR |
| ATUALIZAÇÃO | EXCLUIR |
| EXECUTAR | Subseleções |
Quando você está trabalhando com sinônimos nos contextos indicados anteriormente, o objeto base é afetado. Por exemplo, se um sinônimo faz referência a um objeto base que é uma tabela e você insere uma linha no sinônimo, você está inserindo uma linha na tabela referenciada.
Observação
Não é possível referenciar um sinônimo localizado em um servidor vinculado.
Você pode usar um sinônimo como o parâmetro para a função OBJECT_ID; no entanto, a função retorna a ID do objeto do sinônimo, não o objeto base.
Você não pode referenciar um sinônimo em uma instrução DDL. Por exemplo, as instruções a seguir, que fazem referência a um sinônimo chamado dbo.MyProduct, geram erros:
ALTER TABLE dbo.MyProduct
ADD NewFlag int null;
EXEC ('ALTER TABLE dbo.MyProduct
ADD NewFlag int null');
As seguintes instruções de permissão são associadas somente ao sinônimo e não ao objeto base:
| SUBVENÇÃO | NEGAR |
| REVOGAR |
Os sinônimos não são associados ao esquema e, portanto, não podem ser referenciados pelos seguintes contextos de expressão associada ao esquema:
| Restrições CHECK | Colunas computadas |
| Expressões padrão | Expressões de regra |
| Exibições vinculadas a esquema | Funções associadas a esquema |
Para obter mais informações sobre funções associadas ao esquema, consulte Criar funções definidas pelo usuário (Mecanismo de Banco de Dados).
Obtendo informações sobre sinônimos
A exibição do catálogo sys.synonyms contém uma entrada para cada sinônimo em um determinado banco de dados. Essa exibição de catálogo expõe metadados de sinônimo, como o nome do sinônimo e o nome do objeto base. Para obter mais informações sobre a exibição do sys.synonyms catálogo, consulte sys.synonyms (Transact-SQL).
Usando propriedades estendidas, você pode adicionar texto descritivo ou instrucional, máscaras de entrada e regras de formatação como propriedades de um sinônimo. Como a propriedade é armazenada no banco de dados, todos os aplicativos que leem a propriedade podem avaliar o objeto da mesma maneira. Para obter mais informações, veja sp_addextendedproperty (Transact-SQL).
Para localizar o tipo base do objeto base de um sinônimo, use a função OBJECTPROPERTYEX. Para obter mais informações, consulte OBJECTPROPERTYEX (Transact-SQL).
Exemplos
O exemplo a seguir retorna o tipo base do objeto base de um sinônimo que é um objeto local.
USE tempdb;
GO
CREATE SYNONYM MyEmployee
FOR AdventureWorks2012.HumanResources.Employee;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID('MyEmployee'), 'BaseType') AS BaseType;
O exemplo a seguir retorna o tipo base do objeto base de um sinônimo que é um objeto remoto localizado em um servidor chamado Server1.
EXECUTE sp_addlinkedserver Server1;
GO
CREATE SYNONYM MyRemoteEmployee
FOR Server1.AdventureWorks2012.HumanResources.Employee;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID('MyRemoteEmployee'), 'BaseType') AS BaseType;
GO