Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de dados SQL no Microsoft Fabric
Um sinónimo é um objeto de base de dados que serve os seguintes propósitos:
Fornece um nome alternativo para outro objeto de base de dados, referido como objeto base, que pode existir num servidor local ou remoto.
Fornece uma camada de abstração que protege uma aplicação cliente contra alterações feitas ao nome ou localização do objeto base.
Por exemplo, considere a tabela Employee da Adventure Works, localizada num servidor chamado Server1. Para referenciar esta tabela a partir de outro servidor, Server2, uma aplicação cliente terá de usar o nome de quatro partes Server1.AdventureWorks.Person.Employee. Além disso, se a localização da tabela mudar, por exemplo, para outro servidor, a aplicação cliente teria de ser modificada para refletir essa alteração.
Para resolver ambos os problemas, pode criar um sinónimo, EmpTable num esquema dedicado ou existente, RemoteObjects, no Server2 para a tabela Employee no Server1. Agora, a aplicação cliente só tem de usar o nome em duas partes, RemoteObjects.EmpTable, para referenciar a tabela Employee no Servidor1. Além disso, se a localização da tabela Employee mudar, terá de modificar o sinónimo, EmpTable, para apontar para a nova localização da tabela Employee . Como não existe a instrução ALTER SYNONYM, primeiro tens de eliminar o sinónimo, RemoteObjects.EmpTable, e depois recriar o sinónimo com o mesmo nome, mas agora apontar o sinónimo para a nova localização da tabela Employee .
Um sinónimo pertence a um esquema e, tal como outros objetos num esquema, o nome de um sinónimo deve ser único. Pode criar sinónimos para os seguintes objetos de base de dados:
Procedimento armazenado de montagem (CLR)
Função escalar de montagem (CLR)
Replicação-filtro-procedimento
Função escalar SQL
Função SQL com valores em tabela em linha
View
Função com valor de tabela Assembly (CLR)
Funções agregadas de montagem (CLR)
Função SQL com valores em tabela
Procedimento armazenado SQL
Tabela* (Definida pelo utilizador)
*Inclui tabelas temporárias locais e globais
Observação
Nomes de quatro partes para objetos base de função não são suportados.
Um sinónimo não pode ser o objeto base para outro sinónimo, e um sinónimo não pode referenciar uma função agregada definida pelo utilizador.
A ligação entre um sinónimo e o seu objeto base é apenas pelo nome. Todas as verificações de existência, tipo e permissões no objeto base são adiadas até ao tempo de execução. Assim, o objeto base pode ser modificado, eliminado ou eliminado e substituído por outro objeto que tenha o mesmo nome do objeto base original. Por exemplo, considere um sinónimo, dbo. MyContacts, que faz referência à tabela Person.Contact em Adventure Works. Se a tabela Contact for retirada e substituída por uma vista chamada Person.Contact, os Meus Contactos agora fazem referência à vista Person.Contact .
As referências a sinónimos não estão vinculadas a esquemas. Portanto, um sinónimo pode ser omitido a qualquer momento. No entanto, ao eliminar um sinónimo, corre-se o risco de deixar referências pendentes ao sinónimo que foi eliminado. Estas referências só serão encontradas em tempo de execução.
Sinónimos e Esquemas
Se tiver um esquema padrão que não possui e quiser criar um sinónimo, deve qualificar o nome do sinónimo com o nome de um esquema que possui. Por exemplo, se possui um esquema S1, mas S2 é o seu esquema padrão e usa a instrução CREATE SYNONYM, deve prefixar o nome do sinónimo com o esquema S1, em vez de nomear o sinónimo usando um nome de uma única parte. Para mais informações sobre como criar sinónimos, consulte CRIAR SINONÍMOS (Transact-SQL).
Conceder Permissões sobre um Sinónimo
Apenas os proprietários de sinónimos, membros de db_owner ou membros de db_ddladmin podem conceder permissão sobre um sinónimo.
Pode GRANT, DENY, e REVOKE todas ou qualquer uma das seguintes permissões num sinónimo:
CONTROLO
EXECUTE
SELECT
UPDATE
DELETE
INSERT
ASSUMIR A RESPONSABILIDADE
VER DEFINIÇÃO
Utilização de Sinónimos
Podes usar sinónimos em vez do objeto base referenciado em várias instruções SQL e contextos de expressão. As colunas seguintes contêm uma lista destas afirmações e contextos de expressão:
SELECT
UPDATE
EXECUTE
INSERT
DELETE
Subseleções
Quando se trabalha com sinónimos nos contextos anteriormente indicados, o objeto base é afetado. Por exemplo, se um sinónimo faz referência a um objeto base que é uma tabela e inserir uma linha no sinónimo, está na verdade a inserir uma linha na tabela referenciada.
Observação
Não pode referenciar um sinónimo localizado num servidor ligado.
Pode usar um sinónimo como parâmetro para a função OBJECT_ID; no entanto, a função devolve o ID do objeto do sinónimo, não o objeto base.
Não é possível referenciar um sinónimo numa instrução DDL. Por exemplo, as seguintes afirmações, que referenciam 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 declarações de permissão estão associadas apenas ao sinónimo e não ao objeto base:
GRANT
REVOKE
DENY
Os sinónimos não são limitados por esquemas e, portanto, não podem ser referenciados pelos seguintes contextos de expressão limitados por esquemas:
Restrições CHECK (restrições de verificação)
Expressões padrão
Vistas vinculadas a esquemas
Colunas computadas
Expressões de regras
Funções limitadas por esquemas
Para mais informações sobre funções limitadas por esquemas, consulte Criar Funções Definidas pelo Utilizador (Motor de Base de Dados).
Obter Informação sobre Sinónimos
A sys.synonyms vista de catálogo contém uma entrada para cada sinónimo numa dada base de dados. Esta vista de catálogo expõe metadados de sinónimos, como o nome do sinónimo e o nome do objeto base. Para mais informações, veja sys.synonyms (Transact-SQL).
Ao usar propriedades estendidas, pode adicionar texto descritivo ou instrucional, máscaras de entrada e regras de formatação como propriedades de um sinónimo. Como a propriedade está armazenada na base de dados, todas as aplicações que a leem podem avaliar o objeto da mesma forma. Para mais informações, consulte sp_addextendedproperty (Transact-SQL).
Para encontrar o tipo base do objeto base de um sinónimo, use a função OBJECTPROPERTYEX. Para mais informações, consulte OBJECTPROPERTYEX (Transact-SQL).
Examples
O exemplo seguinte devolve o tipo base do objeto base de um sinónimo que é um objeto local.
USE tempdb;
GO
CREATE SCHEMA SynSchema
GO
CREATE SYNONYM SynSchema.MyEmployee
FOR AdventureWorks2022.HumanResources.Employee;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID('SynSchema.MyEmployee'), 'BaseType') AS BaseType;
O exemplo seguinte devolve o tipo base do objeto base de um sinónimo, que é um objeto remoto localizado num servidor chamado Server1.
EXECUTE sp_addlinkedserver Server1;
GO
CREATE SYNONYM SynSchema.MyRemoteEmployee
FOR Server1.AdventureWorks2022.HumanResources.Employee;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID('MyRemoteEmployee'), 'BaseType') AS BaseType;
GO
Conteúdo relacionado
Criar Sinónimos
CRIAR SINÓNIMO (Transact-SQL)
SINÓNIMO DE GOTA (Transact-SQL)