openrowset 수행을 위한 옵션 변경

EXEC sp_configure 'Show Advanced', 1

RECONFIGURE

sp_configure 'Ad Hoc Distributed Queries', 1

RECONFIGURE


openrowset을 이용해 엑셀파일을 읽어보면 오류가 발생한다

SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0'

,'Excel 12.0;Database=D:\temp\MyFile.xlsx;HDR=YES'

,'select * from [Sheet1$]')


메시지 7403, 수준 16, 상태 1, 5

OLE DB 공급자 "Microsoft.ACE.OLEDB.12.0"() 등록하지 않았습니다.


엑셀파일을 읽어들이는 ACE OLEDB 12 공급자가 없어서 그렇다.

아래에서 "Microsoft Access Database Engine 2010 Redistributable"을 다운받아 설치한다. 

난 64bit SQL Server라 64bit를 설치 했다.

https://www.microsoft.com/en-us/download/details.aspx?id=13255


이제 xp_enum_oledb_providers 를 수행하면 다음과 같이 ACE OLEDB 12 공급자가 등록된 것을 확인할 수 있다.


이제 다시한번 openrowset을 이용해 엑셀파일을 읽어보면 정상적으로 읽어지는것을 확인할 수 있다.

마지막 줄의 Sheet1은 엑셀의 시트 이름이며, 뒤에 $를 꼭 붙여야만 한다.

SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0'

,'Excel 12.0;Database=D:\temp\MyFile.xlsx;HDR=YES'

,'select * from [Sheet1$]')



넥슨 게임DB팀 하만철

AND