티스토리 뷰

꼭 OPENROWSET을 써야만 하는 상황은 아니었지만 오류가 발생하길래 어떤 제약이 걸려있는지 확인해봤다.


일단 읽고자 하는 엑셀 문서가 2010 버전이어서 Access Database Engine 2010 설치


Microsoft Access Database Engine 2010 재배포 가능 패키지
http://www.microsoft.com/ko-kr/download/details.aspx?id=13255


여기서 첫번째 오류(Ad Hoc Distributed Queries 비활성화) 발생

Microsoft OLE DB Provider for SQL Server 오류 '80040e14'

해결하는 방법도 친철하게 설명되어 있다.

명령어를 통해 설정하는 방법은 많이 소개되어 있으므로 여기서는 Management Studio를 이용해서 설정해본다.


SQL Server에서 패싯을 선택하고


노출 영역 구성의 AdHocRemoteQueriesEnabled 속성을 변경해준다.

여기는 서버 전체에 지속적으로 적용되는 설정이므로

저장 프로시저나 함수내에서 명령어로 설정 및 해제하는 것이 바람직하다.


설정을 하고 나니 새로운 오류(임의 액세스 거부) 발생


Microsoft OLE DB Provider for SQL Server 오류 '80040e14'

임의 액세스가 거부되었으니 연결된 서버를 이용하라고 한다.

번거롭게 연결된 서버를 사용하는 대신 임의 액세스를 허용하기로(물론 보안 위험은 사용자가 감수)


방법: 연결 된 서버에 대 한 액세스를 제어 하는 DisallowAdHocAccess 설정 사용
http://support.microsoft.com/kb/327489/ko


연결된 서버의 공급자에서 Microsoft.ACE.OLEDB. 12.0의 속성을 보면


임시 액세스 허용 안 함을 체크 해제하려고 했지만 이미 해제되어 있다. -0-


방법: 연결 된 서버에 대 한 액세스를 제어 하는 DisallowAdHocAccess 설정 사용
http://support.microsoft.com/kb/327489/ko


수동으로 레지스트리를 편집해야 하는 것 같다.

그런데 SQL Server 버전 차이로 위 문서에 나온 경로가 존재하지 않는다.


SQL Server 2008 버전의 경우 위와 같은 경로에 추가해주면 된다.

Management Studio에서 설정을 하게 되면

체크한 경우 데이터 값이 1로 저장되며

체크를 해제한 경우 DisallowAdHocAccess 키 자체를 삭제해버린다.

댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday