프로그래밍/DB

[DB] MSSQL 동의어(시노님) 사용 방법

ss-pro 2023. 2. 18. 18:27
반응형

MSSQL Management툴을 사용하다가 보면 동의어(시노님)라는 메뉴가 있습니다. 동의어의 사전의미는 같거나 비슷한뜻을 가진 낱말이라는 의이미고 영어로 시노님( synonym)이라 불립니다. DB상에서는 로컬이나 원격지(linkedserver)에 있는 다른 데이터베이스를 마치 자기 자신의 DB처럼 연결시켜서 사용 할 수 있게 해줍니다. alias 이라고 생각 하면 될것 같습니다. 시노님을 생성하고 사용하는 방법에 대해 알아 보겠습니다.

1. 동의어(시노님) 사용이유
아래 이미지를 보면 pubs데이터베이스로 연결된 상태에서는 다른 데이터베이스(sampledb)에 있는 데이터를 조회 하기 위해서는
select * from [sampledb].[dbo].UserInfo 와 같이 전체 명칭을 입력해야 합니다. 동의어를 생성하면 이부분을 select * from UserInfo 같이 마치 자신의 테이블처럼 같이 사용 가능합니다. UserInfo란 명칭 대신 다른이름으로 지정도 가능합니다. 이제 언제 사용하실지 감이 오실겁니다.
1) 어플리케이션의 DB연결 개체이름별도 생성없이 기존 ConnectingString을 사용해서 다른 DB에 접속가능.
2) 로컬서버의 다른 DB나 원격서버(linkedServer)에 참조되는 DB를 마치 자신의 테이블처럼 사용가능

2. 동의어(시노님) 생성 (SQL Managment)
pubs의 데이터베이스에서 sampledb의 UserInfo테이블에 동의어를 생성해보도록 하겠습니다. 동의어 메뉴 -> 새 동의어를 항목을 선택합니다.

동의어 이름을 입력하고 연결하고 싶은 서버이름, 데이터베이스명, 개체유형(테이블/뷰/저장프로시저/함수)과 개체이름을 선택 후 확인을 클릭합니다. 로컬데이터베이스를 연결 할 경우에는 서버이름에 값을 입력하지 않고 진행하면됩니다.

동의어(시노님)이 생성되면 select * from MyUserInfo를 입력하면 실제 pubs에 있는 테이블처럼 동작하는 부분을 확인 할 수 있습니다.

3. 동의어(시노님) 생성 (쿼리문)
스크립트문으로 생성하는 방법입니다. 문법이 워낙간단해서 스크립트를 사용하는게 더 편리해 보이네요.

1
2
3
4
5
6
7
USE [pubs]
GO
 
/****** Object:  Synonym [dbo].[MyUserInfo]  ******/
CREATE SYNONYM [dbo].[MyUserInfo] FOR [sampledb].[dbo].[UserInfo]
GO