동의어(데이터베이스 엔진)Synonyms (Database Engine)

동의어란 다음 용도로 사용되는 데이터베이스 개체입니다.A synonym is a database object that serves the following purposes:

  • 로컬 서버나 원격 서버에 있을 수 있는 기본 개체로 참조되는 다른 데이터베이스 개체의 대체 이름을 제공합니다.Provides an alternative name for another database object, referred to as the base object, that can exist on a local or remote server.

  • 기본 개체의 이름이나 위치의 변경으로부터 클라이언트 응용 프로그램을 보호하는 추상적 계층을 제공합니다.Provides a layer of abstraction that protects a client application from changes made to the name or location of the base object.

    예를 들어 Server1 이라는 서버에 있는 Adventure WorksAdventure WorksEmployee테이블을 검토해 보십시오.For example, consider the Employee table of Adventure WorksAdventure Works, located on a server named Server1. 다른 서버 Server2에서 이 테이블을 참조하려면 클라이언트 응용 프로그램이 네 부분으로 된 이름 Server1.AdventureWorks.Person.Employee를 사용해야 합니다.To reference this table from another server, Server2, a client application would have to use the four-part name Server1.AdventureWorks.Person.Employee. 또한 테이블 위치를 다른 서버 등으로 변경하는 경우 이 변경 내용을 반영하기 위해 클라이언트 응용 프로그램을 수정해야 합니다.Also, if the location of the table were to change, for example, to another server, the client application would have to be modified to reflect that change.

    Server1Employee 테이블에 대한 동의어, EmpTableServer2에 만들어 이러한 문제를 해결할 수 있습니다.To address both these issues, you can create a synonym, EmpTable, on Server2 for the Employee table on Server1. 이제 클라이언트 응용 프로그램은 단일 부분으로 된 이름인 EmpTable만 사용하여 Employee 테이블을 참조해야 합니다.Now, the client application only has to use the single-part name, EmpTable, to reference the Employee table. 또한 Employee 테이블 위치가 변경되면 동의어 EmpTable를 수정하여 Employee 테이블의 새 위치를 가리키게 해야 합니다.Also, if the location of the Employee table changes, you will have to modify the synonym, EmpTable, to point to the new location of the Employee table. ALTER SYNONYM 문이 없으므로 먼저 동의어 EmpTable을 삭제한 다음 같은 이름으로 동의어를 다시 만들지만 Employee의 새 위치를 가리키게 해야 합니다.Because there is no ALTER SYNONYM statement, you first have to drop the synonym, EmpTable, and then re-create the synonym with the same name, but point the synonym to the new location of Employee.

    동의어는 스키마에 속하고 스키마의 다른 개체처럼 동의어 이름은 고유해야 합니다.A synonym belongs to a schema, and like other objects in a schema, the name of a synonym must be unique. 다음 데이터베이스 개체의 동의어를 만들 수 있습니다.You can create synonyms for the following database objects:

어셈블리(CLR) 저장 프로시저Assembly (CLR) stored procedure 어셈블리(CLR) 테이블 반환 함수Assembly (CLR) table-valued function
어셈블리(CLR) 스칼라 함수Assembly (CLR) scalar function 어셈블리(CLR) 집계 함수Assembly (CLR) aggregate functions
복제 필터 프로시저Replication-filter-procedure 확장 저장 프로시저Extended stored procedure
SQL 스칼라 함수SQL scalar function SQL 테이블 반환 함수SQL table-valued function
SQL 인라인 테이블 반환 함수SQL inline-tabled-valued function SQL 저장 프로시저SQL stored procedure
보기View 테이블(사용자 정의)Table (User-defined)

로컬 및 전역 임시 테이블이 포함됩니다.Includes local and global temporary tables

참고

함수 기본 개체의 네 부분으로 된 이름은 지원되지 않습니다.Four-part names for function base objects are not supported.

동의어는 다른 동의어의 기본 개체가 될 수 없고 사용자 정의 집계 함수를 참조할 수 없습니다.A synonym cannot be the base object for another synonym, and a synonym cannot reference a user-defined aggregate function.

동의어와 해당 기본 개체는 이름별로만 바인딩됩니다.The binding between a synonym and its base object is by name only. 기본 개체에 대한 모든 존재, 유형 및 권한 검사는 런타임까지 지연됩니다.All existence, type, and permissions checking on the base object is deferred until run time. 따라서 기본 개체를 수정, 삭제 또는 삭제 후 원래 기본 개체와 같은 이름을 가진 다른 개체로 바꿀 수 있습니다.Therefore, the base object can be modified, dropped, or dropped and replaced by another object that has the same name as the original base object. 예를 들어 Person.Contact 테이블을 참조하는 동의어 MyContacts Adventure WorksAdventure Works를 고려해 보십시오.For example, consider a synonym, MyContacts, that references the Person.Contact table in Adventure WorksAdventure Works. Contact 테이블을 삭제한 후 Person.Contact라는 뷰로 바꾸면 MyContactsPerson.Contact 뷰를 참조합니다.If the Contact table is dropped and replaced by a view named Person.Contact, MyContacts now references the Person.Contact view.

동의어에 대한 참조는 스키마에 바인딩되지 않습니다.References to synonyms are not schema-bound. 따라서 동의어는 언제라도 삭제할 수 있습니다.Therefore, a synonym can be dropped at any time. 그러나 동의어를 삭제하면 삭제된 동의어에 대한 참조가 현수 참조로 남게 될 위험이 있습니다.However, by dropping a synonym, you run the risk of leaving dangling references to the synonym that was dropped. 이러한 참조는 런타임에만 발견됩니다.These references will only be found at run time.

동의어 및 스키마Synonyms and Schemas

소유하지 않은 기본 스키마가 있는데 동의어를 만들려면 소유한 스키마 이름을 사용하여 동의어 이름을 적합하게 지정해야 합니다.If you have a default schema that you do not own and want to create a synonym, you must qualify the synonym name with the name of a schema that you do own. 예를 들어 x스키마를 소유하지만 y 스키마가 기본 스키마이고 CREATE SYNONYM 문을 사용할 경우에는 단일 부분으로 된 이름을 사용하여 동의어 이름을 지정하는 대신 x스키마를 동의어 이름 접두사로 지정해야 합니다.For example, if you own a schema x, but y is your default schema and you use the CREATE SYNONYM statement, you must prefix the name of the synonym with the schema x, instead of naming the synonym by using a single-part name. 동의어를 만드는 방법은 CREATE SYNONYM(Transact-SQL)테이블을 검토해 보십시오.For more information about how to create synonyms, see CREATE SYNONYM (Transact-SQL).

동의어에 대한 권한 부여Granting Permissions on a Synonym

db_owner의 멤버나 db_ddladmin 의 멤버인 동의어 소유자만 동의어에 대한 권한을 부여 받을 수 있습니다.Only synonym owners, members of db_owner, or members of db_ddladmin can grant permission on a synonym.

동의어에 대한 다음과 같은 모든 권한에 대해 GRANT, DENY 및 REVOKE를 수행할 수 있습니다.You can GRANT, DENY, REVOKE all or any of the following permissions on a synonym:

CONTROLCONTROL DELETEDELETE
EXECUTEEXECUTE INSERTINSERT
SELECTSELECT TAKE OWNERSHIPTAKE OWNERSHIP
UPDATEUPDATE VIEW DEFINITIONVIEW DEFINITION

동의어 사용Using Synonyms

여러 SQL 문 및 식 컨텍스트에서 동의어를 해당 참조 기준 개체 대신 사용할 수 있습니다.You can use synonyms in place of their referenced base object in several SQL statements and expression contexts. 다음 표에서는 이러한 문 및 식 컨텍스트를 나열합니다.The following table contains a list of these statements and expression contexts:

SELECTSELECT INSERTINSERT
UPDATEUPDATE DELETEDELETE
EXECUTEEXECUTE 하위 SELECTSub-selects

앞에서 설명한 컨텍스트에서 동의어를 사용하면 기준 개체가 영향을 받습니다.When you are working with synonyms in the contexts previously stated, the base object is affected. 예를 들어 동의어가 테이블 기준 개체를 참조하며 동의어에 행을 삽입한 경우 실제로 참조되는 테이블에 행이 삽입됩니다.For example, if a synonym references a base object that is a table and you insert a row into the synonym, you are actually inserting a row into the referenced table.

참고

연결된 서버에 있는 동의어는 참조할 수 없습니다.You cannot reference a synonym that is located on a linked server.

동의어를 OBJECT_ID 함수의 매개 변수로 사용할 수 있습니다. 그러나 함수는 기본 개체가 아닌 동의어의 개체 ID를 반환합니다.You can use a synonym as the parameter for the OBJECT_ID function; however, the function returns the object ID of the synonym, not the base object.

DDL 문에서는 동의어를 참조할 수 없습니다.You cannot reference a synonym in a DDL statement. 예를 들어 dbo.MyProduct라는 동의어를 참조하는 다음 문은 오류를 생성합니다.For example, the following statements, which reference a synonym named dbo.MyProduct, generate errors:

ALTER TABLE dbo.MyProduct  
   ADD NewFlag int null;  
EXEC ('ALTER TABLE dbo.MyProduct  
   ADD NewFlag int null');  

사용 권한 제어를 위한 다음 문은 동의어에만 관련되며 기준 개체와는 관련되지 않습니다.The following permission statements are associated only with the synonym and not the base object:

GRANTGRANT DENYDENY
REVOKEREVOKE

동의어는 스키마 바운드가 아니므로 다음과 같은 스키마 바운드 식 컨텍스트에서 참조할 수 없습니다.Synonyms are not schema-bound and, therefore, cannot be referenced by the following schema-bound expression contexts:

CHECK 제약 조건CHECK constraints 계산 열Computed columns
기본 식Default expressions 규칙 식Rule expressions
스키마 바운드 뷰Schema-bound views 스키마 바운드 함수Schema-bound functions

스키마 바운드 함수에 대한 자세한 내용은 사용자 정의 함수 만들기(데이터베이스 엔진)를 참조하세요.For more information about schema-bound functions, see Create User-defined Functions (Database Engine).

동의어에 대한 정보 가져오기Getting Information About Synonyms

sys.synonyms 카탈로그 뷰에는 지정된 데이터베이스의 각 동의어에 대한 항목이 들어 있습니다.The sys.synonyms catalog view contains an entry for each synonym in a given database. 이 카탈로그 뷰는 동의어 이름과 기본 개체 이름과 같은 동의어 메타데이터를 노출합니다.This catalog view exposes synonym metadata such as the name of the synonym and the name of the base object. sys.synonyms 카탈로그 뷰에 대한 자세한 내용은 sys.synonyms(Transact-SQL)를 참조하세요.For more information about the sys.synonyms catalog view, see sys.synonyms (Transact-SQL).

확장 속성을 사용하면 설명이나 지시 텍스트, 입력 마스크, 서식 설정 규칙을 동의어 속성으로 추가할 수 있습니다.By using extended properties, you can add descriptive or instructional text, input masks, and formatting rules as properties of a synonym. 속성이 데이터베이스에 저장되기 때문에 속성을 읽는 모든 응용 프로그램은 개체를 같은 방식으로 평가할 수 있습니다.Because the property is stored in the database, all applications that read the property can evaluate the object in the same way. 자세한 내용은 sp_addextendedproperty(Transact-SQL)를 참조하세요.For more information, see sp_addextendedproperty (Transact-SQL).

동의어 기본 개체의 기본 유형을 찾으려면 OBJECTPROPERTYEX 함수를 사용합니다.To find the base type of the base object of a synonym, use the OBJECTPROPERTYEX function. 자세한 내용은 OBJECTPROPERTYEX(Transact-SQL)를 참조하세요.For more information, see OBJECTPROPERTYEX (Transact-SQL).

Examples

다음 예에서는 로컬 개체인 동의어 기본 개체의 기본 유형을 반환합니다.The following example returns the base type of a synonym's base object that is a local object.

USE tempdb;  
GO  
CREATE SYNONYM MyEmployee   
FOR AdventureWorks2012.HumanResources.Employee;  
GO  
SELECT OBJECTPROPERTYEX(OBJECT_ID('MyEmployee'), 'BaseType') AS BaseType;  

다음 예에서는 Server1서버에 위치한 원격 개체인 동의어 기본 개체의 기본 유형을 반환합니다.The following example returns the base type of a synonym's base object that is a remote object located on a server named Server1.

EXECUTE sp_addlinkedserver Server1;  
GO  
CREATE SYNONYM MyRemoteEmployee  
FOR Server1.AdventureWorks2012.HumanResources.Employee;  
GO  
SELECT OBJECTPROPERTYEX(OBJECT_ID('MyRemoteEmployee'), 'BaseType') AS BaseType;  
GO  

동의어 만들기Create Synonyms

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

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