MSSQL 2005 에서 MSSQL 2000 서버의 특정 데이블의 데이터가 필요할 경우가
있습니다.
AJAX 를 이용해서 데이터를 가져옵니다. 이건 너무 복잡해집니다. 배보다 배꼽이 더 커질수도 있는 조짐이 보이는
방법이군요.
sp_addlinkedserver 를 이용해서 오픈쿼리로 실행을 한다. 일단 이름이 딱 입니다.
정확히 무슨 용도로 사용이 되는지
sp_addlinkedserver 프로시저의 MSSQL 도움말을 살펴보도록 하겟습니다.
정말 MSSQL 2005 와 MSSQL 2000 를 하나의 서버처럼 사용할수
있습니다. 물론 SQL Server 뿐만 아니라, Oracle, 액세스/Jet, ODBC 데이터 원본, 파일 시스템,
Microsoft Excel 스프레드시트, IBM DB2 Database 도 연결해서(linked) 사용을 할수가
있습니다. [주:지원하는 버젼이 정말 많네요]
이번에 사용하게된 MSSQL 2005 에서 MSSQL 2000 으로
sp_linkedserver 로 연결해서 사용하는 방법을 공개합니다.
별로 쓰일 용도가 없을것 같지만, MSSQL 관리도구중 사용이 간단한 엔터프라이즈 메니져(Enterprise Manager. 이하 EM)로
접속을 하면 모든 데이터베이스 목록을 불러오는 부분에서 사용이 됩니다.
Microsoft 기술문서에 적혀있는 부분을 인용하면 다음과 같습니다.
요약하면, "SQL 서버의 EM 으로 접속을 힐때 각각의 데이터베이스에 접속이 가능한지를 확인하는 저장프로시져라서, 모든 데이터베이스에 대해서 실행이 되기때문에 데이터베이스의 총갯수 + 1번 실행이 되어 로드율이 높을경우, 결과를 확인하는것이 오래걸린다 " 라는 이야기 입니다.
많은 분들이 극찬을 하시는 MSSQL 도움말 을 보면 다음과 같이 나옵니다.
빈번하게 사용되는 EM 이고, 응답시간이 느려서 EM 이 시간제한을 무제한으로 변경하여도 시간제한으로 끊어지는 현상 이 발생하는 힘든 상황에서도 이 프로시져를 수정하여서 응답속도를 줄일수만 있다면 상당한 효과를 볼수 있습니다. 사용량이 많은 SQL 서버의 경우, EM 으로의 작업이 어렵습니다. 그나마 로컬(터미널/콘솔)에서의 작업은 조금 느려도 할만하겠지만, 외부에서 EM 을 이용한 작업은 정말 눈물을 머금게합니다.
이러한 저와 같은 EM 에 최적화(?)되어 있는 사용자들에게는 반드시 필요한 부분이고, 저또한 사용자의 하나로써 적극 권장합니다.
사용방법은 간단합니다. 위의 쿼리를 쿼리분석기로 실행만 하면 바로 적용이 됩니다.
1. EM 에 접속해서 현재의 상황을 확인합니다.
2. 위의 코드를 쿼리분석기에 입력합니다.
3. 쿼리를 실행합니다.
4. EM 으로 접속을 해봅니다.
위 테스트는 일반 사용자계정을 대상으로 진행을 하였습니다. 관리자(SystemAdmin)계정은 모든 데이터베이스에 접근권한이 있기때문에 적용을 하여도 차이가 없습니다.
1. 서비스관리 - 아래의 메뉴중 시작 버튼을 클릭하면 MSSQL 서비스가 시작되게 됩니다. => 시작/계속 : 서비스가 시작되거나 중지상태에서 시작이 되게됩니다. => 일시 중지 : 서비스를 중지시키는것이 아니라 신규접속만을 차단합니다. => 중지 : 서비스를 중지시킵니다.
2. EM( 엔터프라이즈메니져) - 서버를 선택하고 마우스 우측버튼을 클릭하면 다음과 같은 메뉴가 나오게됩니다. => 시작/계속 : 서비스가 시작되거나 중지상태에서 시작이 되게됩니다. => 일시 중지 : 서비스를 중지시키는것이 아니라 신규접속만을 차단합니다. => 중지 : 서비스를 중지시킵니다.
3. 명령창 - 명령행을 이용해서 서비스로 동작하는 MSSQL 서비스와 MSSQL에이젼트를 중지 시작할수 있습니다. 단, 정지 기능은 지원하지 않습니다.
C:\>net start MSSQLSERVER 요청한 서비스가 이미 시작되었습니다.
NET HELPMSG 2182을(를) 입력하면 도움말을 더 볼 수 있습니다.
C:\>net stop MSSQLSERVER 다음 서비스는 MSSQLSERVER 서비스에 영향을 받습니다. MSSQLSERVER 서비스를 멈추면 다음 서비스도 멈추어 집니다. (SQL서버에이젼트는 MSSQL서버서비스에 종속되어있기때문에 자동으로 중지가 됩니다.) SQLSERVERAGENT
이 작업을 계속하시겠습니까? (Y/N) [N]: y SQLSERVERAGENT 서비스를 멈춥니다.. SQLSERVERAGENT 서비스를 잘 멈추었습니다.
MSSQLSERVER 서비스를 멈춥니다... MSSQLSERVER 서비스를 잘 멈추었습니다.
C:\>net start MSSQLSERVER MSSQLSERVER 서비스를 시작합니다.......... MSSQLSERVER 서비스가 잘 시작되었습니다.
C:\>net start SQLSERVERAGENT SQLSERVERAGENT 서비스를 시작합니다... SQLSERVERAGENT 서비스가 잘 시작되었습니다.
댓글을 달아 주세요