IT

OLE DB 공급자 'Microsoft.Jet.OLEDB.4.0'은 분산 쿼리에 사용할 수 없습니다.

itgroup 2023. 4. 13. 20:45
반응형

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

반응형