다음을 통해 공유


CREATE SYNONYM(Transact-SQL)

새 동의어를 만듭니다.

항목 링크 아이콘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 로컬 및 전역 임시 테이블이 포함됩니다.

4부분으로 된 함수 기준 개체 이름은 지원되지 않습니다.

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

사용 권한

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

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

[!참고]

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

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

다음 예에서는 먼저 AdventureWorks 데이터베이스의 기준 개체인 Product에 대한 동의어를 만든 다음 동의어를 사용하여 쿼리합니다.

USE tempdb;
GO
-- Create a synonym for the Product table in AdventureWorks.
CREATE SYNONYM MyProduct
FOR AdventureWorks.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 row(s) affected)

2. 원격 개체의 동의어 만들기

다음 예에서 기준 개체인 Contact는 원격 서버인 Server_Remote에 있습니다.

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

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

다음 예제에서는 주문 총계를 정확하게 12단위로 늘리는 dbo.OrderDozen라는 함수를 만듭니다. 그런 다음 dbo.OrderDozen 함수에 대해 동의어 dbo.CorrectOrder를 만듭니다.

-- 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