OLE DB 공급자 'Microsoft.Jet.OLEDB.4.0'은 분산 쿼리에 사용할 수 없습니다.
마법사를 사용하지 않고 쿼리를 사용하여 Excel에서 SQL Server로 데이터를 가져오고 싶습니다.이 질문을 시도했습니다.
Select * INTO g FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 12.0;Database=D:\new.xlsx;HDR=YES', 'SELECT * FROM [newSheet$]');
그러나 다음 오류가 발생합니다.
메시지 7308, 레벨 16, 스테이트 1, 라인 1
OLE DB 공급자 'Microsoft.공급자가 단일 스레드 아파트 모드에서 실행되도록 구성되어 있으므로 Jet.OLEDB.4.0'을 분산 쿼리에 사용할 수 없습니다.
그래서 구글에서 검색해보니 다음과 같은 답이 나왔어요.
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO
재구성 후에도 동일한 오류가 표시됨...
마이크로소프트(MS.Jet.OLEDB.4.0은 64비트 OS에서는 지원되지 않습니다.
SQL Server 64비트를 실행하고 있는 경우 64비트의 Microsoft Access Database Engine 2010 재배포 가능이 필요할 수 있습니다.
또한 다른 버전이 이미 설치되어 있는 경우 소프트웨어를 설치할 때 약간의 주름이 생길 수 있습니다.이 경우 /passive 스위치를 사용하여 명령줄에서 두 번째 버전을 설치합니다.이 스레드에 따르면:
현재의 Office 이외의 머신(64의 32 등)에서 Microsoft ACE OLEDB Provider 의 인스톨을 개시하면, 인스톨에 실패합니다.올바르게 실행하려면 명령줄에서 "/passive" 인수를 지정하여 실행해야 합니다.
이는 기존 Office 설치에 대해 설명하지만 동시에 데이터베이스 엔진을 설치할 경우에도 마찬가지입니다.
편집: 「Microsoft」도 사용해 주세요.ACE.OLEDB.12.0이 'Microsoft'가 아닙니다.프로바이더 문자열의 Jet.OLEDB.4.0" (@Rumi에 제안)
다음과 같은 SQL 사용:
SELECT * into temptable FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 12.0;Database=D:\new.xlsx','select * from [sheet1$]')
언급URL : https://stackoverflow.com/questions/22032222/ole-db-provider-microsoft-jet-oledb-4-0-cannot-be-used-for-distributed-queries
'IT' 카테고리의 다른 글
c#을 사용하여 SQL Server 테이블 변경을 감시하는 방법 (0) | 2023.04.13 |
---|---|
git-merge --dry-run 옵션이 있나요? (0) | 2023.04.13 |
이전 커밋을 체크한 후 최신 커밋으로 돌아가려면 어떻게 해야 합니까? (0) | 2023.04.13 |
iOS 7의 기본 파란색을 프로그래밍 방식으로 가져오려면 어떻게 해야 합니다. (0) | 2023.04.13 |
T-SQL: 문자열 연결과 반대 - 문자열을 여러 레코드로 분할하는 방법 (0) | 2023.04.13 |