CREATE SYNONYM (Transact-SQL)
Создание нового синонима.
Синтаксис
CREATE SYNONYM [ schema_name_1. ] synonym_name FOR <object>
<object> :: =
{
[ server_name.[ database_name ] . [ schema_name_2 ].| database_name . [ schema_name_2 ].| schema_name_2. ] object_name
}
Аргументы
schema_name_1
Указывает схему, в которой создается новый синоним. Если аргумент schema не задан, SQL Server использует схему по умолчанию текущего пользователя.synonym_name
Имя нового синонима.server_name
Имя сервера, на котором расположен базовый объект.database_name
Имя базы данных, в которой расположен базовый объект. Если не задано database_name, используется имя текущей базы данных.schema_name_2
Имя схемы базового объекта. Если не задан аргумент schema_name, используется схема по умолчанию текущего пользователя.object_name
Имя базового объекта, на который ссылается синоним.
Замечания
Базовый объект не обязательно должен существовать во время создания синонима. SQL Server проверяет существование базового объекта во время выполнения.
Синонимы могут создаваться для следующих типов объектов:
Хранимая процедура сборки (среда CLR) |
Возвращающая табличное значение функция сборки (среда CLR) |
Скалярная функция сборки (среда CLR) |
Агрегатные функции сборки (среда CLR) |
Процедура фильтра репликации |
Расширенная хранимая процедура |
Скалярная функция SQL |
Возвращающая табличное значение функция SQL |
Встроенная возвращающая табличное значение функция SQL |
Хранимая процедура SQL |
Представление |
Таблица1 (пользовательская) |
1 Включает локальные и глобальные временные таблицы
Четырехчастные имена для базовых объектов функций не поддерживаются.
Синонимы можно создавать, удалять и ссылаться на них в динамическом SQL.
Разрешения
Для создания синонима в заданной схеме пользователь должен иметь разрешение CREATE SYNONYM и, либо владеть схемой, либо иметь разрешение ALTER SCHEMA.
Разрешение на выполнение CREATE SYNONYM можно предоставлять.
Примечание |
---|
Чтобы успешно скомпилировать инструкцию CREATE SYNONYM, необязательно иметь разрешение на базовый объект, потому что проверка всех разрешений на базовые объекты откладывается до времени выполнения. |
Примеры
А. Создание синонима для локального объекта
В следующем примере вначале создается синоним для базового объекта, Product, в базе данных AdventureWorks2008R2, а затем выполняется запрос к нему.
USE tempdb;
GO
-- Create a synonym for the Product table in AdventureWorks2008R2.
CREATE SYNONYM MyProduct
FOR AdventureWorks2008R2.Production.Product;
GO
-- Query the Product table by using the synonym.
USE tempdb;
GO
SELECT ProductID, Name
FROM MyProduct
WHERE ProductID < 5;
GO
Ниже приводится результирующий набор.
-----------------------
ProductID Name
----------- --------------------------
1 Adjustable Race
2 Bearing Ball
3 BB Ball Bearing
4 Headset Ball Bearings
(Обработано строк: 4)
Б. Создание синонима для удаленного объекта
В следующем примере базовый объект, Contact, находится на удаленном сервере с именем Server_Remote.
EXEC sp_addlinkedserver Server_Remote;
GO
USE tempdb;
GO
CREATE SYNONYM MyEmployee FOR Server_Remote.AdventureWorks2008R2.HumanResources.Employee;
GO
В. Создание синонима для определяемой пользователем функции
В следующем примере создается функция с именем dbo.OrderDozen, которая увеличивает объем заказа до целого числа дюжин. Затем в примере создается синоним dbo.CorrectOrder для функции dbo.OrderDozen.
-- Creating the dbo.OrderDozen function
CREATE FUNCTION dbo.OrderDozen (@OrderAmt int)
RETURNS int
WITH EXECUTE AS CALLER
AS
BEGIN
IF @OrderAmt % 12 <> 0
BEGIN
SET @OrderAmt += 12 - (@OrderAmt % 12)
END
RETURN(@OrderAmt);
END;
GO
-- Using the dbo.OrderDozen function
DECLARE @Amt int
SET @Amt = 15
SELECT @Amt AS OriginalOrder, dbo.OrderDozen(@Amt) AS ModifiedOrder
-- Create a synonym dbo.CorrectOrder for the dbo.OrderDozen function.
CREATE SYNONYM dbo.CorrectOrder
FOR dbo.OrderDozen;
GO
-- Using the dbo.CorrectOrder synonym.
DECLARE @Amt int
SET @Amt = 15
SELECT @Amt AS OriginalOrder, dbo.CorrectOrder(@Amt) AS ModifiedOrder
См. также