동의어 이해

동의어란 다음 용도로 사용되는 데이터베이스 개체입니다.

  • 로컬 서버나 원격 서버에 있을 수 있는 기본 개체로 참조되는 다른 데이터베이스 개체의 대체 이름을 제공합니다.
  • 기본 개체의 이름이나 위치의 변경으로부터 클라이언트 응용 프로그램을 보호하는 추상적 계층을 제공합니다.

예를 들어 Server1이라는 서버에 있는 Adventure Works의 Employee 테이블을 검토해 보십시오. 다른 서버 Server2에서 이 테이블을 참조하려면 클라이언트 응용 프로그램이 네 부분으로 된 이름 Server1.AdventureWorks.Person.Employee를 사용해야 합니다. 또한 테이블 위치를 다른 서버 등으로 변경하는 경우 이 변경 내용을 반영하기 위해 클라이언트 응용 프로그램을 수정해야 합니다.

Server1Employee 테이블에 대한 동의어, EmpTableServer2에 만들어 이러한 문제를 해결할 수 있습니다. 이제 클라이언트 응용 프로그램은 단일 부분으로 된 이름인 EmpTable만 사용하여 Employee 테이블을 참조해야 합니다. 또한 Employee 테이블 위치가 변경되면 동의어 EmpTable를 수정하여 Employee 테이블의 새 위치를 가리키게 해야 합니다. ALTER SYNONYM 문이 없으므로 먼저 동의어 EmpTable을 삭제한 다음 같은 이름으로 동의어를 다시 만들지만 Employee의 새 위치를 가리키게 해야 합니다.

동의어는 스키마에 속하고 스키마의 다른 개체처럼 동의어 이름은 고유해야 합니다. 다음 데이터베이스 개체의 동의어를 만들 수 있습니다.

어셈블리(CLR) 저장 프로시저

어셈블리(CLR) 테이블 값 함수

어셈블리(CLR) 스칼라 함수

어셈블리(CLR) 집계 함수

복제 필터 프로시저

확장 저장 프로시저

SQL 스칼라 함수

SQL 테이블 값 함수

SQL 인라인 테이블 값 함수

SQL 저장 프로시저

테이블1(사용자 정의)

1에는 개인 및 전역 임시 테이블이 포함됩니다.

[!참고] 함수 기본 개체의 네 부분으로 된 이름은 지원되지 않습니다.

동의어는 다른 동의어의 기본 개체가 될 수 없고 사용자 정의 집계 함수를 참조할 수 없습니다.

동의어와 해당 기본 개체는 이름별로만 바인딩됩니다. 기본 개체에 대한 모든 존재, 유형 및 권한 검사는 런타임까지 지연됩니다. 따라서 기본 개체를 수정, 삭제 또는 삭제 후 원래 기본 개체와 같은 이름을 가진 다른 개체로 바꿀 수 있습니다. 예를 들어 Adventure Works의 Person.Contact 테이블을 참조하는 동의어 MyContacts를 고려해 보십시오. Contact 테이블을 삭제한 후 Person.Contact라는 뷰로 바꾸면 MyContactsPerson.Contact 뷰를 참조합니다.

동의어에 대한 참조는 스키마에 바인딩되지 않습니다. 따라서 동의어는 언제라도 삭제할 수 있습니다. 그러나 동의어를 삭제하면 삭제된 동의어에 대한 참조가 현수 참조로 남게 될 위험이 있습니다. 이러한 참조는 런타임에만 발견됩니다.

동의어 및 스키마

소유하지 않은 기본 스키마가 있는데 동의어를 만들려면 소유한 스키마 이름을 사용하여 동의어 이름을 적합하게 지정해야 합니다. 예를 들어 x 스키마를 소유하지만 y 스키마가 기본 스키마이고 CREATE SYNONYM 문을 사용할 경우에는 단일 부분으로 된 이름을 사용하여 동의어 이름을 지정하는 대신 x 스키마를 동의어 이름 접두사로 지정해야 합니다. 동의어를 만드는 방법은 CREATE SYNONYM(Transact-SQL)을 참조하십시오.

동의어에 대한 권한 부여

db_owner의 멤버나 db_ddladmin의 멤버인 동의어 소유자만 동의어에 대한 권한을 부여 받을 수 있습니다.

동의어에 대한 다음과 같은 모든 권한에 대해 GRANT, DENY 및 REVOKE를 수행할 수 있습니다.

CONTROL

DELETE

EXECUTE

INSERT

SELECT

TAKE OWNERSHIP

UPDATE

VIEW DEFINITION

참고 항목

개념

소유권 체인

관련 자료

CREATE SYNONYM(Transact-SQL)
DROP SYNONYM(Transact-SQL)

도움말 및 정보

SQL Server 2005 지원 받기