Основные сведения о синонимах

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

  • предоставляет альтернативное имя для другого объекта базы данных, существующего на локальном или удаленном сервере, на которое затем ссылаются как на базовый объект;

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

Например, рассмотрим таблицу Employee в образце базы данных База данных AdventureWorks2008R2, расположенном на сервере Server1. Для доступа к этой таблице с сервера Server2 клиентское приложение должно указать четырехкомпонентное имя: Server1.AdventureWorks.HumanResources.Employee. Если бы таблицу нужно было переместить, например, на другой сервер, клиентское приложение также надо было бы модифицировать, чтобы отобразить ее новое местоположение.

Для решения обеих этих проблем на сервере Server2 можно создать синоним — EmpTable —для таблицы Employee, расположенной на Server1. Теперь клиентскому приложению необходимо указывать имя таблицы, состоящее всего из одного элемента EmpTable, для обращения к таблице Employee. Кроме того, если местоположение таблицы Employee будет изменено, нужно будет только изменить синоним EmpTable, чтобы он указывал на новое местоположение таблицы Employee. Так как инструкции ALTER SYNONYM не существует, необходимо сначала удалить синоним EmpTable, а затем повторно создать его с тем же именем, указав новое местоположение таблицы Employee.

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

Хранимая процедура сборки (среда CLR)

Возвращающая табличное значение функция сборки (среда CLR)

Скалярная функция сборки (среда CLR)

Агрегатная функция сборки (среда CLR)

Процедура фильтра репликации

Расширенная хранимая процедура

Скалярная функция SQL

Возвращающая табличное значение функция SQL

Возвращающая табличное значение встроенная функция SQL

Хранимая процедура SQL

Представление

Таблица1 (пользовательская)

1 Включает локальные и глобальные временные таблицы.

ПримечаниеПримечание

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

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

Синоним связан с его базовым объектом только по имени. Любые проверки на существование, тип и разрешения для базового объекта откладываются до стадии выполнения. Таким образом, базовый объект может быть изменен, удален или заменен другим объектом, имеющим то же имя, что и исходный. Например, предположим, что синоним MyContacts ссылается на таблицу Person.Contact в базе данных Adventure Works. Если таблица Person удаляется и заменяется представлением с именем Person.Person, синоним MyContacts будет указывать на представление Person.Person.

Ссылки на синонимы не привязаны к схеме. Таким образом, синоним может быть удален в любой момент. Однако удаление синонима может оказаться чревато тем, что останутся несвязанные ссылки на него, что проявится только на стадии выполнения.

Синонимы и схемы

Если пользователь создает синоним в схеме, владельцем которой он не является, имя синонима необходимо предварять именем схемы, владельцем которой является пользователь. Например, если пользователь владеет схемой x, но текущей схемой является y, то при выполнении инструкции CREATE SYNONYM имя синонима необходимо уточнять схемой x, а не указывать с помощью однокомпонентного имени. Дополнительные сведения о том, как создавать синонимы, см. в разделе CREATE SYNONYM (Transact-SQL).

Предоставление разрешений на синоним

Только владельцы синонима или члены ролей db_owner и db_ddladmin могут предоставлять разрешения на синоним.

Для синонима можно предоставить, запретить или отменить все или любые разрешения из нижеперечисленных:

CONTROL

DELETE

EXECUTE

INSERT

SELECT

TAKE OWNERSHIP

UPDATE

VIEW DEFINITION

См. также

Справочник

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