강의 컨설팅 트레이닝 무료진단 무료책자 마케팅편지 마케팅정보공유 다이어리 서비스제휴 고객센터

:: 엑셀 워크시트를 연결된 서버로 만들기
작성자 : 13 김영철
등록날짜 : 2009.01.24 22:46
3,114

오랜만에 강좌를 올리게 되네요. 예전에 연결된 서버(Linked Server) 마지막 강좌에서 '다음 강좌를 기대해 주세요'라고 했는데, 그 이후로 많은 시간이 흘렀습니다. 그 강좌에 이어 연결된 서버의 활용에 대해 설명을 해보고자 합니다.

연결된 서버는 꼭 서버와 서버 간에만 가능한것이 아닙니다. 바로 이전 강좌 마지막 부분에 언급 했듯이 엑셀 워크시트를 연결된 서버로 설정할 수도 있고, 일반 텍스트 문서를 연결된 서버로 설정할 수 있습니다. 이번 강좌에서는 엑셀 워크시트를 연결된 서버로 설정하여 엑셀 워크시트를 데이터베이스의 테이블처럼 활용하는 방법을 확인해 보도록 하겠습니다.

1. 엑셀 워크시트 준비

우선 작업에 사용할 엑셀 워크시트를 만들어 보도록 하겠습니다. 다음 [그림 1]과 같이 간단한 연락처 목록을 만들어 C:\temp 폴더에 저장을 했습니다.

lec_m0011a.jpg
[그림 1]

이름, 전화번호, 주소, 성별 이렇게 네개의 컬럼으로 구성된 연락처입니다. 사실 업무에서 이렇게 간단한 엑셀 워크시트를 사용할 일은 없습니다. 단지 예를 들기 위해 이렇게 작성했음을 양해해 주시기 바랍니다. 위 엑셀 시트를 연결된 서버로 설정하는 방법은 다음과 같습니다.

2. 연결된 서버 만들기

연결된 서버를 만드는 것은 바로 이전 강좌에서 설명이 된 내용입니다. EM에서 연결된 서버를 등록하는 부분은 다음 [그림 2]와 같이 [보안] 부분의 [연결된 서버] 부분 입니다. 현재는 연결된 서버가 전혀 등록되어 있지 않음을 알 수 있습니다.

lec_a0020b.jpg
[그림 2]

[그림 2]의 "연결된 서버" 에서 마우스 오른쪽 버튼을 눌러 표시되는 단축 메뉴에서 "새 연결된 서버(S)"를 선택하면 다음 [그림 3]과 같이 "연결된 서버 속성" 대화 창이 표시됩니다.

lec_a0020c.jpg
[그림 3]

이제부터 설명하는 내용이 중요합니다. 엑셀 시트를 연결된 서버로 설정하기 위해서는 다음 [그림 4]와 같이 입력을 해주어야 합니다.

lec_m0011b.jpg
[그림 4]

ㅇ 연결된 서버(N) : 이후에 우리가 사용할 이름을 지정합니다. 여기서는 EXCEL로 입력하겠습니다.
ㅇ 공급자 이름(P) : Microsoft Jet 4.0 OLE DB Provider
ㅇ 제품 이름(U) : Jet 4.0
ㅇ 데이터 원본(D) : 앞에서 만든 엑셀 워크시트의 경로 및 파일 이름을 지정합니다. 우리가 앞에서 작성한 엑셀 워크시트는 c:\temp\연락처.xls 입니다.
ㅇ 공급자 문자열(V) : 엑셀 버젼을 입력합니다. 대부분 Excel 8.0으로 입력하면 될거라 보입니다.

그리고 아래 [그림 5]와 같이 엑셀 워크시트에 연결할 때 사용할 계정을 등록해 줍니다. 계정 부분에 admin을 입력해 주시고 암호는 비워두시기 바랍니다.

lec_m0011c.jpg
[그림 5]

[확인] 버튼을 누르면 여기 까지의 과정으로 해서 엑셀 워크시트를 연결된 서버로 설정하는 과정이 완료 된 것입니다. EM에서 등록된 Excel 이라는 이름의 연결된 서버를 확장하고 테이블 부분을 선택하면 아래 [그림 6]과 같이 엑셀 워크시트에서 보이던 세개의 시트가 보일 겁니다.

lec_m0011d.jpg
[그림 6]

위 결과를 보더라도 뭔가 된것 같은 느낌이 들지 않나요? 자 그럼 QA에서 연결한 엑셀 워크시트의 내용을 검색해 보도록 하겠습니다.

3. 연결된 서버 사용하기

QA를 연결한 후 아래 [그림 7]과 같이 SELECT 문을 수행하게 되면 엑셀 워크시트의 내용이 표시되는것을 볼 수 있습니다.

lec_m0011e.jpg
[그림 7]

수행한 쿼리문은 다음과 같습니다.

SELECT * FROM EXCEL...sheet1$

ㅇ 연결된 서버 이름 EXCEL을 사용했습니다.
ㅇ 데이터베이스와 소유자를 생각하기 위해 ... 를 입력했습니다.
sheet$1은 데이터가 입력되어 있는 첫번째 시트 이름입니다.

위 결과처럼 이제 엑셀 워크시트를 데이터베이스의 테이블처럼 사용할 수 있게 되었습니다. 그런데 출력된 결과가 저희가 입력한 순서랑 맞지가 않네요. 다음과 같이 해 주어야 할 것 같습니다.

SELECT 이름, 전화번호, 주소, 성별 FROM EXCEL...sheet1$

다음과 같이 데이터 추가도 가능합니다.

INSERT INTO EXCEL...sheet1$(이름, 전화번호, 주소, 성별)
VALUES('한국인', '666-8877', '부산', '남')

또한 다음과 같이 데이터 변경도 가능합니다.

UPDATE EXCEL...sheet1$
SET 성별 = '여'
WHERE 이름 = '이장래'

하지만...

아쉽게도 데이터 삭제는 불가능합니다. 만일 다음과 같이 DELETE 문을 수행하게 되면

DELETE EXCEL...sheet1$ WHERE 이름 = '이장래'

다음과 같은 오류가 발생합니다.

서버: 메시지 7345, 수준 16, 상태 1, 줄 1
OLE DB 공급자 'Microsoft.Jet.OLEDB.4.0'이(가) 'sheet1$' 테이블에서 삭제할 수 없습니다. RPC 오류 등과 같이 복구할 수 있는 공급자 오류가 있습니다.
[OLE/DB provider returned message: 이 ISAM에서는 연결된 테이블의 데이터를 삭제할 수 없습니다.]
OLE DB 오류 추적 [OLE/DB Provider 'Microsoft.Jet.OLEDB.4.0' IRowsetChange::DeleteRows returned 0x80040e21: DBROWSTATUS_E_FAIL].

4. QA를 이용한 엑셀 워크시트 연결된 서버 만들기

QA를 이용해서 연결된 서버를 만드는 과정은 다음과 같습니다.

USE master
GO

sp_addlinkedserver N'Excel', N'Jet 4.0',
N'Microsoft.Jet.OLEDB.4.0',
N'c:\temp\연락처.xls', NULL, N'Excel 8.0'
GO

sp_addlinkedsrvlogin N'Excel', false, sa, N'ADMIN', NULL
GO

5. 정리

엑셀 워크시트를 연결된 서버로 사용하는 경우는 그렇게 많지는 않습니다. 하지만 충분히 활용 가능한 부분이 많이 있습니다. 예를 들어 외부에서 데이터를 받아 왔는데 엑셀 워크시트로 되어 있는 경우(우편번호 등) 연결된 서버를 사용하면 됩니다. 물론 DTS를 이용해서 엑셀 워크시트의 내용을 테이블로 올려 사용할 수도 있습니다. 어떤 방법을 사용해도 상관은 없지만, 이런 방법도 있고 저런 방법도 있다는 사실을 기억해 두시면 언젠가는 도움이 될것이라 생각합니다.

 

 

 

출처 : http://www.sqlworld.pe.kr

"쇼핑몰·홈페이지·오픈마켓
블로그·페이스북·이메일 등의 각종 마케팅 글쓰기,
각종 광고, 영업, 판매, 제안서, 전단지
반응율 3배×10배 이상 높이는 마법의 8단계 공식"
자세히보기

Comments

번호 제목 글쓴이 날짜 조회
2685 :: 사용자 정의 함수(User Defined Function) :: 13 김영철 01.24 2680
2684 :: 트리거(Trigger) :: 13 김영철 01.24 2375
2683 :: 백업(Backup) 이란? :: 13 김영철 01.24 2499
2682 :: 백업 장치 만들기 :: 13 김영철 01.24 2318
2681 :: 전체 백업 받기 :: 13 김영철 01.24 2294
2680 :: 전체 백업으로부터의 복원 :: 13 김영철 01.24 2500
2679 :: 차등 백업 받기와 복원 :: 13 김영철 01.24 2121
2678 :: 데이터베이스 옵션을 이용한 트랜잭션 로그 제어 :: 13 김영철 01.24 2885
2677 :: 트랜잭션 로그 줄이기 테스트 :: 13 김영철 01.24 2303
2676 :: 백업과 복원 정리 :: 13 김영철 01.24 2009
2675 :: SQL Server Agent 서비스 이해 :: 13 김영철 01.24 2820
2674 :: [작업 만들기 마법사] 이용하기 :: 13 김영철 01.24 2725
2673 :: 등록된 작업 살펴보기 :: 13 김영철 01.24 2447
2672 :: 새로운 작업 등록하기 :: 13 김영철 01.24 2057
2671 :: 데이터베이스 유지 관리 계획 마법사 :: 13 김영철 01.24 2354
2670 ::[데이터 가져오기 및 보내기]를 이용한 데이터 변환 :: 13 김영철 01.24 2694
2669 :: 기본적인 웹 페이지 만들기 :: 13 김영철 01.24 2108
2668 :: 템플릿을 이용한 웹 페이지 만들기 :: 13 김영철 01.24 2322
2667 ▒엑셀파일을 ms-sql DB테이블로 전환하기 13 김영철 01.24 3252
2666 :: INFOEMATION_SCHEMA 뷰 이용하기 :: 13 김영철 01.24 2119
2665 :: 인증모드와 로그인 관리 :: 13 김영철 01.24 2404
2664 :: 데이터베이스 사용자 추가 13 김영철 01.24 2242
2663 :: 연결된 서버 만들기 13 김영철 01.24 2933
열람중 :: 엑셀 워크시트를 연결된 서버로 만들기 13 김영철 01.24 3115
2661 mssql 함수모음 13 김영철 01.24 3402
2660 :: text타입의 본문 문자열바꾸기 Sql 13 김영철 01.24 2346
2659 오라클과 MSSQL 의 날짜 비교 13 김영철 01.24 3564
2658 MSSQL 백업복구 13 김영철 01.24 3114
2657 [MSSQL]쿼리 분석기 더 잘 사용하기 13 김영철 01.24 3414
2656 SQL Injection 기법 정리(MSSQL) 13 김영철 01.24 4173
마케팅
특별 마케팅자료
다운로드 마케팅자료
창업,경영
기획,카피,상품전략
동기부여,성취