복붙노트

[SQL] 연결된 서버는 null OLE DB 제공자 Microsoft.Jet.OLEDB.4.0의 인스턴스를 만들 수 없습니다

SQL

연결된 서버는 null OLE DB 제공자 Microsoft.Jet.OLEDB.4.0의 인스턴스를 만들 수 없습니다

나는 T-SQL 쿼리를 통해 Excel로 내 테이블 데이터에서 수입하려면 노력하고 있어요. 약간의 연구 후 나는이 함께했다

INSERT INTO OPENROWSET ('Microsoft.Jet.OLEDB.4.0', 
                        'Excel 8.0;Database=G:\Test.xls;', 
                        'SELECT * FROM [Sheet1$]') 
SELECT * 
FROM   dbo.products 

나는이 오류가 위의 쿼리 오전를 실행하면

그래서 솔루션을 인터넷을 통해 갔다, 링크 아래에있어

https://blogs.msdn.microsoft.com/spike/2008/07/23/ole-db-provider-microsoft-jet-oledb-4-0-for-linked-server-null-returned-message-unspecified-error/

OPENROWSET은 TEMP 폴더 내부의 파일이나 폴더를 생성하기 때문에 위의 링크에서 그들은 우리가해야처럼 관리자가 C 드라이브 TEMP 폴더에 폴더를 만들라고했다

나는 내 홈 PC에이 일을하고 있는데 관리자입니다. 여전히 같은 오류를 얻고있다.

SQL 서버에 대한 자세한 내용은

이 문제를 해결하려면 모든 포인터는 높게 평가 될 것이다

업데이트 : 이미 내가 쿼리 분산 특별 구성하고

쿼리 아래의 실행

EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'AllowInProcess', 1
GO 
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'DynamicParameters', 1
GO 

지금이 오류를 얻고있다

해결법

  1. ==============================

    1.난 당신이 특정 버전으로 조정해야 할 수도 있습니다, 그래서 이것은 매우 몹시 신경을 쓰는 것 같다 MS SQL 서버 2012 및 Office 2013이있다.

    난 당신이 특정 버전으로 조정해야 할 수도 있습니다, 그래서 이것은 매우 몹시 신경을 쓰는 것 같다 MS SQL 서버 2012 및 Office 2013이있다.

    여기에 SP_CONFIGURE 명령입니다 :

    SP_CONFIGURE 'show advanced options', 1; 
    GO 
    RECONFIGURE; 
    SP_CONFIGURE 'Ad Hoc Distributed Queries', 1; 
    GO 
    RECONFIGURE; 
    EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1   
    EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParam', 1
    

    새로운 SQL 서버 2014 대신 'DynamicParam'사용 'DynamicParameters'을했다

    EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1
    

    이 같은 msexcl40.dll를 등록해야합니다 :

    regsvr32 C:\Windows\SysWOW64\msexcl40.dll
    
  2. ==============================

    2.sp_configure를 재설정 / 체크 아웃 ...

    sp_configure를 재설정 / 체크 아웃 ...

    sp_configure 'show advanced options', 1;
    GO
    RECONFIGURE;
    GO
    sp_configure 'Ad Hoc Distributed Queries', 1;
    GO
    RECONFIGURE;
    GO
    

    추가 정보를 원하시면 다음 링크를 참조하십시오 :

    https://technet.microsoft.com/en-us/library/aa259616(v=sql.80).aspx

    http://blog.sqlauthority.com/2010/11/03/sql-server-fix-error-ms-jet-oledb-4-0-cannot-be-used-for-distributed-queries-because-the-provider-is-used-to-run-in-apartment-mode/

  3. ==============================

    3.작품! 큰 감사합니다. 그냥 64 비트 윈 서버 2012R2합니다. 나 전체 작업 스크립트가 부분적으로있는 위의 비트를 반복 넣어 함께 결합 (내게로) 쉽지 않다 보자 :

    작품! 큰 감사합니다. 그냥 64 비트 윈 서버 2012R2합니다. 나 전체 작업 스크립트가 부분적으로있는 위의 비트를 반복 넣어 함께 결합 (내게로) 쉽지 않다 보자 :

    1) Windows 용 Microsoft.ACE.OLEDB.12.0 다운로드, 64 비트 버전은 여기에서 찾을 : https://www.microsoft.com/en-us/download/details.aspx?id=13255

    2))이 경우 각각의 열 (이름과 클래스 엑셀 파일을 만듭니다.

    3) 실행 코드 아래 :

    sp_configure 'show advanced options', 1;  
    RECONFIGURE;
    GO 
    sp_configure 'Ad Hoc Distributed Queries', 1;  
    RECONFIGURE;  
    GO 
    
    /* -- Not sure commented bits are necessary but I also have run them
    EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'AllowInProcess', 1
    GO 
    EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'DynamicParameters', 1
    GO 
    
    -- below two lines failed with: Msg 2787, Level 16, State 1, Procedure sp_MSset_oledb_prop, Line 106 Invalid format specification: '%1!.'.
        EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1   
    EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParam', 1
    
    -- but works all two as below:
    EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1   
    EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1
    -- Succeded to run after success with Excel so does not looks like necessary
    
    
    */
    
    INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0', 
    'Excel 8.0;Database=C:\testing.xlsx;', 
    'SELECT Name, Class FROM [Sheet1$]') 
    SELECT [Name],[Class] FROM Qry_2
    GO
    
  4. ==============================

    4.이 문제를 해결하기 위해 아래 쿼리를 실행하십시오 :

    이 문제를 해결하기 위해 아래 쿼리를 실행하십시오 :

    EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'AllowInProcess', 1
    GO 
    EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'DynamicParameters', 1
    GO 
    
  5. from https://stackoverflow.com/questions/36987636/cannot-create-an-instance-of-ole-db-provider-microsoft-jet-oledb-4-0-for-linked by cc-by-sa and MIT license