Поделиться через


Использование синонимов (компонент Database Engine)

Изменения: 14 апреля 2006 г.

Можно использовать синонимы вместо их базового объекта, на который они ссылаются, в нескольких инструкциях SQL и контекстах выражения. Следующая таблица содержит список этих инструкций и контекстов выражения.

SELECT

INSERT

UPDATE

DELETE

EXECUTE

Подзапросы выборки

При работе с синонимами в сформулированных ранее контекстах будет затронут базовый объект. Например, если синоним ссылается на базовый объект, который является таблицей, и строка вставляется в синоним, то фактически строка вставляется в таблицу, на которую ссылается синоним.

ms190626.note(ru-ru,SQL.90).gifПримечание.
Нельзя сослаться на синоним, который расположен на связанном сервере.

Синоним можно использовать в качестве параметра функции OBJECT_ID; однако эта функция вернет идентификатор объекта для синонима, а не для базового объекта.

Нельзя ссылаться на синоним в инструкции DDL. Например, следующие инструкции, ссылающиеся на синоним dbo.MyProduct, приведут к ошибке.

ALTER TABLE dbo.MyProduct
   ADD NewFlag int null;
EXEC ('ALTER TABLE dbo.MyProduct
   ADD NewFlag int null');

Следующие инструкции разрешений связаны только с синонимом, а не с базовым объектом.

GRANT

DENY

REVOKE

 

Синонимы не привязаны к схеме, и поэтому на них нельзя сослаться следующими привязанными к схеме контекстами выражения.

Ограничения CHECK

Вычисляемые столбцы

Выражения по умолчанию

Выражения правил

Привязанные к схеме представления

Привязанные к схеме функции

Дополнительные сведения о привязанных к схеме функциях см. в разделе Создание пользовательских функций (Database Engine).

Примеры

Следующий пример создает синоним, который будет использоваться в дальнейших примерах.

USE tempdb;
GO
CREATE SYNONYM MyAddressType
FOR AdventureWorks.Person.AddressType;
GO

Следующий пример вставляет строку в базовую таблицу, на которую ссылается синоним MyAddressType.

USE tempdb;
GO
INSERT INTO MyAddressType (Name)
VALUES ('Test');
GO

Следующий пример демонстрирует, как на синоним можно сослаться в динамическом SQL.

USE tempdb;
GO
EXECUTE ('SELECT Name FROM MyAddressType');
GO

См. также

Основные понятия

Синонимы (Database Engine)
Цепочки владения

Другие ресурсы

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

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

14 апреля 2006 г.

Новое содержимое.
  • Добавлены сведения об использовании синонимов в функции OBJECT_ID.
Измененное содержимое.
  • Инструкции языка DDL удалены из списка инструкций, допускающих использование синонимов.