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


CREATE SYNONYM (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

Создание нового синонима.

Соглашения о синтаксисе Transact-SQL

Синтаксис

Синтаксис SQL Server:

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
}

синтаксис База данных SQL Azure:

CREATE SYNONYM [ schema_name_1. ] synonym_name FOR <object>

<object> ::=
{
    [ database_name. [ schema_name_2 ] . | schema_name_2. ] object_name
}

Аргументы

schema_name_1

Указывает схему, в которой создается новый синоним. Если schema_name не указан, SQL Server использует схему по умолчанию текущего пользователя.

synonym_name

Имя нового синонима.

server_name

Имя сервера, на котором расположен базовый объект.

database_name

Имя базы данных, в которой находится базовый объект. Если database_name не указан, используется имя текущей базы данных.

schema_name_2

Имя схемы базового объекта. Если schema_name не указан, используется схема по умолчанию текущего пользователя.

object_name

Имя базового объекта, на который ссылается синоним.

Примечание.

База данных SQL Azure поддерживает формат database_name.[schema_name].object_name имени трех частей, если database_name является текущей базой данных или database_name, tempdb а object_name начинается.#

Замечания

Базовый объект может не существовать в момент создания синонима. SQL Server проверяет существование базового объекта во время выполнения.

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

    • Хранимая процедура сборки (среда CLR)
    • Возвращающая табличное значение функция сборки (среда CLR)
    • Скалярная функция сборки (среда CLR)
    • Агрегатная функция сборки (среда CLR)
    • Процедура фильтра репликации
    • Расширенная хранимая процедура
    • Скалярная функция T-SQL
    • Функция T-SQL с табличным значением
    • Функция T-SQL inline-table-valued
    • Хранимая процедура T-SQL
    • Таблица (определяемая пользователем, включает локальные и глобальные временные таблицы)
    • Представления
  • Имена четырех частей для базовых объектов функции не поддерживаются.

  • Синонимы можно создавать, удалять и ссылаться на нее в динамическом T-SQL.

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

Разрешения

Чтобы создать синоним в данной схеме, пользователь должен иметь разрешение и иметь CREATE SYNONYM либо схему, либо иметь разрешение ALTER SCHEMA.

Разрешение CREATE SYNONYM является предоставленным разрешением.

Примечание.

Для успешной компиляции CREATE SYNONYM инструкции не требуется разрешение на базовый объект, так как все проверки разрешений на базовый объект откладываются до времени выполнения.

Примеры

А. Создание синонима для локального объекта

В следующем примере сначала создается синоним для базового объекта Product в базе данных AdventureWorks2022, а затем выполняется запрос к этому синониму.

-- Create a synonym for the Product table in AdventureWorks2022.
CREATE SYNONYM MyProduct
FOR AdventureWorks2022.Production.Product;
GO

-- Query the Product table by using the synonym.
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 row(s) affected)

B. Создание синонима для удаленного объекта

В следующем примере базовый объект, Contact, находится на удаленном сервере с именем Server_Remote.

EXEC sp_addlinkedserver Server_Remote;
GO
USE tempdb;
GO
CREATE SYNONYM MyEmployee FOR Server_Remote.AdventureWorks2022.HumanResources.Employee;
GO

В. Создание синонима для определяемой пользователем функции

В следующем примере создается функция с именем dbo.OrderDozen, которая увеличивает объем заказа до 12 единиц. Затем в примере создается синоним 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;

См. также

Следующие шаги