В этом руководстве вы узнаете о синонимах SQL Server и о том, как создавать синонимы для объектов базы данных.
- Что такое синоним в SQL Server?
- Синтаксис оператора SQL Server CREATE SYNONYM
- Примеры операторов SQL Server CREATE SYNONYM
- A) Создание синонима в рамках одной базы данных. Пример
- Б) Создание синонима для таблицы в другой базе данных
- Список всех синонимов базы данных
- A) Список синонимов с помощью команды Transact-SQL
- Б) Список синонимов с использованием SQL Server Management Studio
- Удаление синонима
- Пример удаления синонимов
- Когда использовать синонимы
- 1) Упростите названия объектов
- 2) Включить плавное изменение имени объекта
- Преимущества синонимов
Что такое синоним в SQL Server?
В SQL Server синоним — это псевдоним или альтернативное имя для объекта базы данных, например таблицы, представления, хранимой процедуры, определяемой пользователем функции и последовательности. Синоним предоставляет вам множество преимуществ, если вы используете его правильно.
Синтаксис оператора SQL Server CREATE SYNONYM
Чтобы создать синоним, используйте оператор CREATE SYNONYM следующим образом:
CREATE SYNONYM [ schema_name_1. ] synonym_name FOR object;
Объект имеет следующий вид:
[ server_name.[ database_name ] . [ schema_name_2 ]. object_name
В этом синтаксисе:
- Сначала укажите целевой объект, которому вы хотите назначить синоним в предложении FOR.
- Во-вторых, укажите имя синонима после ключевых слов CREATE SYNONYM.
Обратите внимание, что объект, для которого вы создаете синоним, не обязательно должен существовать на момент создания синонима.
Примеры операторов SQL Server CREATE SYNONYM
Давайте рассмотрим несколько примеров использования оператора CREATE SYNONYM, чтобы лучше понять его.
A) Создание синонима в рамках одной базы данных. Пример
В следующем примере оператор CREATE SYNONYM используется для создания синонима для таблицы sales.orders:
CREATE SYNONYM orders FOR sales.orders;
После создания синонима orders вы можете ссылаться на него в любом месте, где используется целевой объект(таблица sales.orders).
Например, следующий запрос использует синоним orders вместо таблицы sales.orders:
SELECT * FROM orders;
Б) Создание синонима для таблицы в другой базе данных
Сначала создайте новую базу данных с именем test и установите текущую базу данных для тестирования:
CREATE DATABASE test; GO USE test; GO
Далее создайте новую схему с именем purchase внутри тестовой базы данных:
CREATE SCHEMA purchasing; GO
Затем создайте новую таблицу в схеме закупок тестовой базы данных:
CREATE TABLE purchasing.suppliers ( supplier_id INT PRIMARY KEY IDENTITY, supplier_name NVARCHAR(100) NOT NULL );
После этого из базы данных BikeStores создайте синоним для таблицы buying.suppliers в тестовой базе данных:
CREATE SYNONYM suppliers FOR test.purchasing.suppliers;
Наконец, в базе данных BikeStores обратитесь к таблице test.purchasing.suppliers, используя синоним suppliers:
SELECT * FROM suppliers;
Список всех синонимов базы данных
Просмотреть все синонимы базы данных можно с помощью Transact-SQL и SQL Server Management Studio.
A) Список синонимов с помощью команды Transact-SQL
Чтобы получить список всех синонимов текущей базы данных, выполните запрос из представления каталога sys.synonyms, как показано в следующем запросе:
SELECT name, base_object_name, type FROM sys.synonyms ORDER BY name;
Вот что получилось:
Б) Список синонимов с использованием SQL Server Management Studio
В SQL Server Management Studio вы можете просмотреть все синонимы текущей базы данных с помощью узла «Синонимы», как показано на следующем рисунке:
Удаление синонима
Чтобы удалить синоним, используйте оператор DROP SYNONYM со следующим синтаксисом:
DROP SYNONYM [ IF EXISTS ] [schema.] synonym_name
В этом синтаксисе:
- Сначала укажите имя синонима, которое вы хотите удалить, после ключевых слов DROP SYNONYM.
- Во-вторых, используйте IF EXISTS для условного удаления синонима, только если он существует. Удаление несуществующего синонима без опции IF EXISTS приведет к ошибке.
Пример удаления синонимов
В следующем примере оператор DROP SYNONYM используется для удаления синонима orders:
DROP SYNONYM IF EXISTS orders;
Когда использовать синонимы
Вы обнаружите несколько ситуаций, в которых вы сможете эффективно использовать синонимы.
1) Упростите названия объектов
Если вы ссылаетесь на объект из другой базы данных(даже с удаленного сервера), вы можете создать синоним в своей базе данных и ссылаться на этот объект так, как он есть в вашей базе данных.
2) Включить плавное изменение имени объекта
Если вы хотите переименовать таблицу или любой другой объект, такой как представление, хранимую процедуру, пользовательскую функцию или последовательность, существующие объекты базы данных, которые ссылаются на эту таблицу, необходимо вручную изменить, чтобы они отражали новое имя. Кроме того, все текущие приложения, которые используют эту таблицу, необходимо изменить и, возможно, перекомпилировать. Чтобы избежать всей этой тяжелой работы, вы можете переименовать таблицу и создать для нее синоним, чтобы существующие приложения продолжали функционировать должным образом.
Преимущества синонимов
Синонимы обеспечивают следующие преимущества при правильном использовании:
- Обеспечить уровень абстракции над базовыми объектами.
- Сократите длинное имя, например, very_long_database_name.with_schema.and_object_name с упрощенным псевдонимом.
- Обеспечьте обратную совместимость для существующих приложений при переименовании объектов базы данных, таких как таблицы, представления, хранимые процедуры, определяемые пользователем функции и последовательности.
В этом руководстве вы узнали о синонимах SQL Server и о том, как эффективно использовать их в своих приложениях.