두 개의 MS SQL 서버가 존재한다고 가정을 하겠습니다. 그리고 서버의 이름은 SVR1과 SVR2라고 가정을 하겠습니다. 이런 상황에서 SVR1의 데이터베이스에 연결이 된 상태에서 SVR2 서버의 데이터베이스 내용을 참고해야 하는 경우가 발생 할 수 있습니다. 실제 업무에서 본다면 회계용 MS SQL 서버에 접속한 상태에서 특별한 목적으로 인사용 MS SQL 서버의 데이터베이스의 내용이 필요한 경우가 발생할 수 있습니다.
얼핏 생각하기에 두 서버가 MS SQL 서버가 설치가 되어 있고 네트워크로 연결이 되어 있으므로 그냥 쿼리문을 수행하면 될거라 생각하지만 그렇지 않습니다.
이 처럼 다른 MS SQL와 연결하여 작업을 해야하는 경우 사용되는 것이 연결된 서버(Linked Server)입니다. 연결된 서버를 이용하게 되면 다른 서버에 위치하고 있는 데이터베이스를 손쉽게 접근할 수 있으며, 심지어는 MS SQL 서버가 아니더라도 다른 종류의 데이터를 쉽게 접근 할 수 있습니다. 예를 들어 엑셀 파일을 데이터베이스 서버처럼 사용 할 수 도 있고 심지어 텍스트 파일도 데이터베이스 서버처럼 사용을 할 수 도 있습니다. 이에 대한 내용들을 살펴보도록 하겠습니다.
1. 연결된 서버 만들기
대부분의 작업들이 그러하듯이 연결된 서버를 만드는 것은 EM(Enterprise Manager)를 이용해서도 가능하고 QA(Query Analyzer)를 이용해서도 가능합니다. 이 두가지 방법은 순서대로 살펴보도록 하겠습니다.
그런데 이 강좌에 있어 전제 사항이 있습니다. 연결된 서버의 경우 두대의 MS SQL 서버를 연결해야 하는데 이 강좌를 작성하고 있는 지금 제게는 두대의 MS SQL 서버가 없습니다. 이런 이유도 강좌를 작성하는데는 두개의 MS SQL 서버 인스턴스를 사용하도록 하겠습니다. MS SQL 서버 2000은 하나의 서버에 여러개의 MS SQL 서버를 만들 수 있습니다. 이것이 인스턴스 입니다. 처음에 기본 인스턴스로 설치되면 이때 설치된 MS SQL 서버가 서버 이름이 되며 그 이후에 설치되는 MS SQL 서버는 "서버이름\인스턴스이름"을 이름으로 갖게 됩니다.
이 강좌에서는 다음의 인스턴스가 사용됩니다.
o FUTURE
o FUTURE\INST01
위 두개의 인스턴스가 개별적인 MS SQL 서버라고 생각하시고 강좌를 이해하시면 됩니다. 다음 [그림 1]은 두개의 인스턴스가 설치어 EM에 등록된 모습을 보여주고 있습니다.
[그림 1]
이제 하려고 하는 것은 FUTURE 서버에 접속을 해서 FUTURE\INST01 서버의 데이터베이스를 사용 할 수 있도록 FUTURE\INST01서버를 FUTURE 서버에 연결된 서버로 등록하는 것입니다. 만일 지금 상황에서 FUTURE 서버에 로그인 해서 다음과 같이 FUTURE\INST01 서버의 Pubs 데이터베이스에서 검색을 하려고 하면 어떻게 될까요?
SELECT * FROM [FUTURE\INST01].Pubs.dbo.Titles |
다음과 같은 에러가 발생하게 됩니다.
서버: 메시지 7202, 수준 11, 상태 2, 줄 1 |
위 에러메세지만 보아도 연결된 서버(Linked Server)를 만들어야 위 쿼리문이 제대로 수행되며 연결된 서버를 만드는 시스템 저장프로시져가 sp_addlinkedserver 임을 알 수 있습니다. 이 저장프로시져는 뒤에서 살펴보도록 하고 우선 EM을 통해 연결된 서버를 만들어 보도록 하겠습니다.
EM에서 연결된 서버를 등록하는 부분은 다음 [그림 2]와 같이 [보안] 부분의 [연결된 서버] 부분 입니다. 현재는 연결된 서버가 전혀 등록되어 있지 않음을 알 수 있습니다.
[그림 2]
[그림 2]의 "연결된 서버" 에서 마우스 오른쪽 버튼을 눌러 표시되는 단축 메뉴에서 "새 연결된 서버(S)"를 선택하면 다음 [그림 3]과 같이 "연결된 서버 속성" 대화 창이 표시됩니다.
[그림 3]
위 [그림 3]에서 [일반] 탭을 보면 입력할 사항들이 많습니다. 하지만 MS SQL 서버를 연결된 서버로 등록하는 경우는 "연결된 서버" 이름만 입력하고 "서버 유형"에서 "SQL Server" 만 선택하면 됩니다. 다머지 항목들은 MS SQL 서버가 아닌 다른 DBMS와 연결을 하는 경우에 사용됩니다. 이 부분은 나중에 사용을 해보도록 하겠습니다.
저희가 연결된 서버로 등록하려고 하는 것은 FUTURE\INST01 서버입니다. 이 서버를 등록하기 위해 다음 [그림 4] 처럼 입력과 선택을 하면 됩니다.
[그림 4]