Usando sinônimos (Mecanismo de Banco de Dados)
É possível usar sinônimos em lugar do seu objeto base referido 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:
SELECT |
INSERT |
UPDATE |
DELETE |
EXECUTE |
Subseleções |
Quando você está trabalhando com sinônimos nos contextos declarados anteriormente, o objeto base é afetado. Por exemplo, se um sinônimo fizer referência a um objeto base que está em uma tabela e você inserir uma linha no sinônimo, na verdade você estará inserindo uma linha na tabela referida.
Observação |
---|
Não é possível fazer referência a um sinônimo localizado em um servidor vinculado. |
É possível usar um sinônimo como o parâmetro da função OBJECT_ID. No entanto, a função retorna a ID do objeto do sinônimo, não o objeto base.
Não é possível fazer referência a um sinônimo em uma instrução DDL. Por exemplo, as instruções a seguir que fazem referência a um sinônimo denominado dbo.MyProduct geram erros:
ALTER TABLE dbo.MyProduct
ADD NewFlag int null;
EXEC ('ALTER TABLE dbo.MyProduct
ADD NewFlag int null');
As instruções de permissão a seguir são associadas apenas ao sinônimo e não ao objeto base:
GRANT |
DENY |
REVOKE |
|
Sinônimos não são associados a esquemas e, portanto, não podem ser referidos pelos seguintes contextos de expressão associados a esquemas:
Restrições CHECK |
Colunas computadas |
Expressões padrão |
Expressões de regra |
Exibições associadas a esquema |
Funções associadas a esquema |
Para obter mais informações sobre funções associadas a esquema, consulte Criando funções definidas pelo usuário (Mecanismo de Banco de Dados).
Exemplos
O exemplo a seguir cria um sinônimo que será usado em exemplos subsequentes.
USE tempdb;
GO
CREATE SYNONYM MyAddressType
FOR AdventureWorks2008R2.Person.AddressType;
GO
O exemplo a seguir insere uma linha na tabela base que é referida pelo sinônimo MyAddressType.
USE tempdb;
GO
INSERT INTO MyAddressType (Name)
VALUES ('Test');
GO
O exemplo a seguir demonstra como um sinônimo pode ser referido no SQL dinâmico.
USE tempdb;
GO
EXECUTE ('SELECT Name FROM MyAddressType');
GO
Consulte também