CREATE SYNONYM(Transact-SQL)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

새 동의어를 만듭니다.

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
}

Azure SQL Database 구문:

CREATE SYNONYM [ schema_name_1. ] synonym_name FOR <object>

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

참고 항목

SQL Server 2014(12.x) 및 이전 버전에 대한 Transact-SQL 구문을 보려면 이전 버전 설명서를 참조 하세요.

인수

schema_name_1

동의어가 생성되는 스키마를 지정합니다. schema_name 지정되지 않은 경우 SQL Server는 현재 사용자의 기본 스키마를 사용합니다.

synonym_name

새 동의어의 이름입니다.

server_name

기본 개체가 있는 서버의 이름입니다.

database_name

기본 개체가 있는 데이터베이스의 이름입니다. database_name 지정하지 않으면 현재 데이터베이스의 이름이 사용됩니다.

schema_name_2

기본 개체의 스키마 이름입니다. schema_name 지정되지 않은 경우 현재 사용자의 기본 스키마가 사용됩니다.

object_name

동의어가 참조하는 기본 개체의 이름입니다.

참고 항목

Azure SQL Database는 database_name 현재 데이터베이스이거나 tempdb database_name object_name 시작하는 경우 세 부분으로 구성된 이름 형식 database_name.[schema_name].object_name 을 지원합니다.#

설명

동의어를 만들 때 기준 개체가 존재해야 할 필요는 없습니다. SQL Server는 기준 개체의 존재 여부를 런타임에 검사합니다.

  • 다음과 같은 유형의 개체에 대해 동의어를 만들 수 있습니다.

    • 어셈블리(CLR) 저장 프로시저
    • 어셈블리(CLR) 테이블 반환 함수
    • 어셈블리(CLR) 스칼라 함수
    • 어셈블리(CLR) 집계 함수
    • 복제 필터 프로시저
    • 확장 저장 프로시저
    • T-SQL 스칼라 함수
    • T-SQL 테이블 반환 함수
    • T-SQL 인라인 테이블 반환 함수
    • T-SQL 저장 프로시저
    • 테이블(사용자 정의, 로컬 및 전역 임시 테이블 포함)
    • 보기
  • 함수 기본 개체의 네 부분으로 된 이름은 지원되지 않습니다.

  • 동의어는 동적 T-SQL에서 생성, 삭제 및 참조할 수 있습니다.

  • 동의어는 데이터베이스별로 지정되며 다른 데이터베이스에서 액세스할 수 없습니다.

사용 권한

지정된 스키마에서 동의어를 만들려면 사용자에게 사용 권한이 있어야 하며 스키마를 소유하거나 ALTER SCHEMA 권한이 있어야 합니다 CREATE SYNONYM .

권한은 CREATE SYNONYM 부여할 수 있는 권한입니다.

참고 항목

기본 개체에 대한 모든 권한 검사 런타임까지 지연되므로 문을 성공적으로 컴파일 CREATE SYNONYM 하기 위해 기본 개체에 대한 권한이 필요하지 않습니다.

예제

A. 로컬 개체의 동의어 만들기

다음 예에서는 먼저 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

C. 사용자 정의 함수의 동의어 만들기

다음 예제에서는 주문 총계를 정확하게 12단위로 늘리는 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;

참조

다음 단계