동의어 이해
동의어란 다음 용도로 사용되는 데이터베이스 개체입니다.
- 로컬 서버나 원격 서버에 있을 수 있는 기본 개체로 참조되는 다른 데이터베이스 개체의 대체 이름을 제공합니다.
- 기본 개체의 이름이나 위치의 변경으로부터 클라이언트 응용 프로그램을 보호하는 추상적 계층을 제공합니다.
예를 들어 Server1이라는 서버에 있는 Adventure Works의 Employee 테이블을 검토해 보십시오. 다른 서버 Server2에서 이 테이블을 참조하려면 클라이언트 응용 프로그램이 네 부분으로 된 이름 Server1.AdventureWorks.Person.Employee를 사용해야 합니다. 또한 테이블 위치를 다른 서버 등으로 변경하는 경우 이 변경 내용을 반영하기 위해 클라이언트 응용 프로그램을 수정해야 합니다.
Server1의 Employee 테이블에 대한 동의어, EmpTable을 Server2에 만들어 이러한 문제를 해결할 수 있습니다. 이제 클라이언트 응용 프로그램은 단일 부분으로 된 이름인 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라는 뷰로 바꾸면 MyContacts는 Person.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)