복붙노트

[SQL] OLE DB 공급자 연결된 서버 "Microsoft.ACE.OLEDB.12.0" "(널)"

SQL

OLE DB 공급자 연결된 서버 "Microsoft.ACE.OLEDB.12.0" "(널)"

나는 다음 문을 실행하기 위해 노력하고있어하지만 바로 아래의 오류 메시지를 수신하고 있습니다. 나는 끝이 답을 연구하고 아무도 나를 위해 일한 없다. 나는 오피스 365 (64 비트)를 실행하고 있습니다. 나는 마이크로 소프트 액세스 데이터베이스 엔진 (64 비트)를 장착했다. 이 시각 SSDT 스튜디오 2013뿐 아니라 SQL 서버 2012에서 내가 SQL 서버 환경 또는 시작 매개 변수를 변경에 액세스 할 수없는 것입니다. 어떤 도움에 감사드립니다.

SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.15.0', 
    'Excel 12.0;Database=C:\Users\UserName\Folder\SomeFile.xlsx;;HDR=NO;IMEX=1', [Table 1$])

여기에 내가 시도 무엇 :

첫째, 실행 ...

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

없는 사랑으로 ... 이어.

EXEC sys.sp_addsrvrolemember @loginame = N'<<Domain\User>>', @rolename = N'sysadmin';
GO

EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.15.0', N'AllowInProcess', 1 
GO 
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.15.0', N'DynamicParameters', 1 
GO 

나는 그뿐만 아니라, 여전히 사랑을 본대로 나는 Microsoft.ACE.OLEDB.12.0을 읽을 수있는 코드를 변경했습니다.

에 (시스템, MSSQLSERVER 및 관리자, 네트워크 서비스 : \ 사용자 \ MSSQLSERVER \의 AppData \ 로컬 \ 온도 및 C : 다음에 대한 모든 권한을 부여한 윈도우 \ ServiceProfiles \ NetworkService와 \의 AppData \ 로컬 나는 또한 C의 권한을 확인했다 후자의).

여전히 사랑.

마지막으로, 나는 작동하지 않는 고집했다 Microsoft Access 데이터베이스 엔진의 32 비트 버전으로 변경 시도했다.

도움말 누구?

해결법

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

    1.http://www.aspsnippets.com/Articles/The-OLE-DB-provider-Microsoft.Ace.OLEDB.12.0-for-linked-server-null.aspx

    http://www.aspsnippets.com/Articles/The-OLE-DB-provider-Microsoft.Ace.OLEDB.12.0-for-linked-server-null.aspx

    이 문제를 해결합니다. 몇 가지 이유를 들어 SQL Server는 기본 MSSQLSERVER 계정 좋아하지 않는다. 로컬 사용자 계정으로 전환하면 문제를 해결합니다.

  2. ==============================

    2.공급자와 연결을 시도하는 동안은 SQL의 다양한 오류 메시지가 발생 이것은 내 참조 용입니다. 다른 답변은 "이,이,이 시도"을 명문화하고. 나는 다른 답변을 주셔서 감사합니다,하지만 난 특정 문제를 가진 한 쌍의 특정 솔루션에 좋아

    공급자와 연결을 시도하는 동안은 SQL의 다양한 오류 메시지가 발생 이것은 내 참조 용입니다. 다른 답변은 "이,이,이 시도"을 명문화하고. 나는 다른 답변을 주셔서 감사합니다,하지만 난 특정 문제를 가진 한 쌍의 특정 솔루션에 좋아

    오류

    ... 제공자는 ... 초기화 데이터 소스 오브젝트 정보가 없습니다 포기하지 않았다 ...

    오류 번호

    7399, 7303

    오류 세부 정보

    Msg 7399, Level 16, State 1, Line 2 The OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" reported an error. 
      The provider did not give any information about the error. 
    Msg 7303, Level 16, State 1, Line 2 Cannot initialize the data source object
      of OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)".
    

    해결책

    파일이 열려 있었다. 닫아.

    신용

    오류

    액세스가 거부 ... 열 정보를 얻을 수 없습니다 ...

    오류 번호

    7399, 7350

    오류 세부 정보

    Msg 7399, Level 16, State 1, Line 2 The OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" reported an error. 
      Access denied.
    Msg 7350, Level 16, State 2, Line 2 Cannot get the column information 
      from OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)".
    

    해결책

    주고 액세스

    신용

    오류

    하나 이상의 필수 매개 변수 주어진 값은 .... 쿼리를 실행 할 수 없음 ...

    오류 번호

    ???, 7320

    오류 세부 정보

    OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" returned message "No value given for one or more required parameters.".
    Msg 7320, Level 16, State 2, Line 2
    Cannot execute the query "select [Col A], [Col A] FROM $Sheet" against OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)". 
    

    해결책

    열 이름이 잘못 될 수 있습니다. 수행 [골 A]와 [골 B]가 실제로 스프레드 시트에 존재 하는가?

    오류

    "지정되지 않은 오류"... 수 없습니다 초기화 데이터 소스 개체 ...

    오류 번호

    ???, 7303

    오류 세부 정보

    OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" returned message "Unspecified error".
    Msg 7303, Level 16, State 1, Line 2 Cannot initialize the data source object of OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)".
    

    해결책

    관리자 권한으로 실행 SSMS. 이 질문을 참조하십시오.

    기타 참조

    속성을 수정을 제안 기타 답변. 확실하지 이러한 두 가지 속성 (을 확인하거나 선택을 취소)을 수정하면 도움이 될 방법에 대해 설명합니다.

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

    3.대신 사용자를 변경, 나는이 조언을 발견했습니다 :

    대신 사용자를 변경, 나는이 조언을 발견했습니다 :

    https://social.technet.microsoft.com/Forums/lync/en-US/bb2dc720-f8f9-4b93-b5d1-cfb4f8a8b1cb/the-ole-db-provider-microsoftaceoledb120-for-linked-server-null-reported-an-error-access?forum=sqldataaccess

  4. ==============================

    4.확인 Excel 파일이 열려 있지 않습니다.

    확인 Excel 파일이 열려 있지 않습니다.

  5. ==============================

    5.SQL 서버에서 다음 단계를 수행하십시오 :

    SQL 서버에서 다음 단계를 수행하십시오 :

  6. ==============================

    6.여기에 어떤 Excel 파일이 조회되는 경우에만 나를 위해 일한 것은 열려 있지 않습니다 특히 나를으로 SQL Server 서비스를 실행할 때 [파일 시스템에 대한 액세스 권한이있는 사용자로]. 나는 내 대답의 조각은 이미 내가 어떤 중복 죄송합니다, 그래서 다른 곳에서 주어진하지만, 더 간결하게 대답을 위해 참조 :

    여기에 어떤 Excel 파일이 조회되는 경우에만 나를 위해 일한 것은 열려 있지 않습니다 특히 나를으로 SQL Server 서비스를 실행할 때 [파일 시스템에 대한 액세스 권한이있는 사용자로]. 나는 내 대답의 조각은 이미 내가 어떤 중복 죄송합니다, 그래서 다른 곳에서 주어진하지만, 더 간결하게 대답을 위해 참조 :

    USE [master]
    GO
    
    EXEC sp_configure 'Show Advanced Options', 1
    RECONFIGURE
    GO
    
    EXEC sp_configure 'Ad Hoc Distributed Queries', 1
    RECONFIGURE
    GO
    
    EXEC sp_MSSet_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
    GO
    
    EXEC sp_MSSet_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1
    GO
    
    
    SELECT * 
    FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
                    'Excel 12.0;Database=C:\MyExcelFile.xlsx',
                    'SELECT * FROM [MyExcelSheetName$]')
    
  7. ==============================

    7.윈도우 10 나 64 비트 모든 노력을 2014 I이었다 그것을 작품을 만든 것은 SQL Server를 실행하고 있습니다 :

    윈도우 10 나 64 비트 모든 노력을 2014 I이었다 그것을 작품을 만든 것은 SQL Server를 실행하고 있습니다 :

    EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 0
    

    AllowInProcess가 작동하게하지만 내 경우에는 핵심이었다 해제 이유를 모르겠어요. linkserver에 떨어져 모든 옵션을 돌려의 제안에 감사드립니다.

  8. ==============================

    8.난 당신이 모든 대답 / 블로그에서 볼 것을 모든 EXEC 저장 프로 시저의 명령을 실행 한 후 같은 문제를했지만, 내가 관리자로 SSMS를 실행했을 때, 문제는 멀리 갔다. 나는 그렇게하고 싶지 않았기 때문에, 나는 서비스를 오픈 SQL 서버 (MyServer를) 마우스 오른쪽 클릭하면, 선택한 속성에 갔다. 로그온 탭에서 "이 계정은 :"으로 선택한 내 SQL Server 계정 / 암호를 나열했다. 내가 대신 "로컬 시스템 계정"을 확인하고 "데스크톱과 상호 작용하도록 서비스를 허용"을 쳤다. 그 때 나는 중지하고 서비스를 시작했다. 원래 포스터가 SSMS에서 관리자 권한으로 실행하지 않고 언급으로 지금, 나는 동일한 쿼리를 실행할 수 있습니다. 내 홈 바탕 화면에 SQL Server를 실행하고 있기 때문에 이것은 아마도했다.

    난 당신이 모든 대답 / 블로그에서 볼 것을 모든 EXEC 저장 프로 시저의 명령을 실행 한 후 같은 문제를했지만, 내가 관리자로 SSMS를 실행했을 때, 문제는 멀리 갔다. 나는 그렇게하고 싶지 않았기 때문에, 나는 서비스를 오픈 SQL 서버 (MyServer를) 마우스 오른쪽 클릭하면, 선택한 속성에 갔다. 로그온 탭에서 "이 계정은 :"으로 선택한 내 SQL Server 계정 / 암호를 나열했다. 내가 대신 "로컬 시스템 계정"을 확인하고 "데스크톱과 상호 작용하도록 서비스를 허용"을 쳤다. 그 때 나는 중지하고 서비스를 시작했다. 원래 포스터가 SSMS에서 관리자 권한으로 실행하지 않고 언급으로 지금, 나는 동일한 쿼리를 실행할 수 있습니다. 내 홈 바탕 화면에 SQL Server를 실행하고 있기 때문에 이것은 아마도했다.

    나는 또한 애드혹 액세스 (많은 다른 옵션)를 사용하려면 SSMS에서 GUI를 사용할 수 있다는 점을 지적하고 싶습니다. SSMS에서 연결된 서버> 공급자, 공급자에 마우스 오른쪽 버튼으로 클릭하고 속성을 선택로 이동합니다. 그럼 그냥 / 확인 당신이 원하는 사람을 선택 취소 할 수 있습니다.

  9. ==============================

    9.... 또는 다음 쿼리를 실행합니다 :

    ... 또는 다음 쿼리를 실행합니다 :

    USE [master] 
    GO 
    EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1 
    GO 
    EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1 
    GO 
    
  10. ==============================

    10.우리의 경우, SQL Server 서비스에 대한 매개 변수를 추가하는 데 도움이 :

    우리의 경우, SQL Server 서비스에 대한 매개 변수를 추가하는 데 도움이 :

  11. ==============================

    11.내가 컴퓨터 이름을 사용하여 공유 폴더에서 파일을 액세스하기 때문에 내 경우에는이 문제가 발생하는했다. OPENROWSET ( ''Microsoft.Jet.OLEDB.4.0 '', ''엑셀 8.0, 데이터베이스 = '\ ntpc0100 \ MysharedFolder \ KPI_tempData \ VariablePayoutDetails.xls'; IMEX = 1; '', '.....) 컴퓨터 이름 ntpc0100 (무엇이든 컴퓨터 이름) 당신이 당신의 컴퓨터의 여기서 IPaddress를 지정해야합니다을 사용하는 Insted. 예를 들어 : - OPENROWSET ( ''Microsoft.Jet.OLEDB.4.0 '', ''엑셀 8.0, 데이터베이스 = '\ 193.34.23.200 \ MysharedFolder \ KPI_tempData \ KPIVariablePayoutDetails.xls'....);

    내가 컴퓨터 이름을 사용하여 공유 폴더에서 파일을 액세스하기 때문에 내 경우에는이 문제가 발생하는했다. OPENROWSET ( ''Microsoft.Jet.OLEDB.4.0 '', ''엑셀 8.0, 데이터베이스 = '\ ntpc0100 \ MysharedFolder \ KPI_tempData \ VariablePayoutDetails.xls'; IMEX = 1; '', '.....) 컴퓨터 이름 ntpc0100 (무엇이든 컴퓨터 이름) 당신이 당신의 컴퓨터의 여기서 IPaddress를 지정해야합니다을 사용하는 Insted. 예를 들어 : - OPENROWSET ( ''Microsoft.Jet.OLEDB.4.0 '', ''엑셀 8.0, 데이터베이스 = '\ 193.34.23.200 \ MysharedFolder \ KPI_tempData \ KPIVariablePayoutDetails.xls'....);

  12. ==============================

    12.나를 위해,이 두 가지가 서로 다른 경우에 도움이 :

    나를 위해,이 두 가지가 서로 다른 경우에 도움이 :

    그냥 MS Access 런타임을 설치 한 경우 1), 서버를 재부팅합니다. 데이터베이스 인스턴스를 수신 거부하는 것은 충분하지 않습니다.

    잠금을 너무 - 확인 Excel 파일이 열려 있지 잘 만들기로 2), 당신이 켜져 미리보기 창에 Windows 탐색기를 열고 없어 확인.

  13. ==============================

    13.

    Exec sp_configure 'show advanced options', 1;
    RECONFIGURE;
    GO
    
    Exec sp_configure 'Ad Hoc Distributed Queries', 1;
    RECONFIGURE;
    GO
    
    EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'AllowInProcess' , 1; 
    GO
    EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'DynamicParameters' , 1;
    GO
    
    Insert into OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0','Data Source=C:\upload_test.xlsx;Extended Properties=Excel 12.0')...[Sheet1$]
    SELECT ColumnNames FROM Your_table -- Sheet Should be already Present along with headers
    
    EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'AllowInProcess' , 0;
    GO
    EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'DynamicParameters' , 0;
    GO
    
    Exec sp_configure 'Ad Hoc Distributed Queries', 0;
    RECONFIGURE;
    GO
    
    Exec sp_configure 'show advanced options', 0
    RECONFIGURE;
    GO
    
  14. ==============================

    14.SQL 2014와 함께, 내가 LocalSystem으로 실행하는 SQL Server 서비스 (MSSQL)를 변경했습니다. 이것은 나를 위해 문제를 해결했다.

    SQL 2014와 함께, 내가 LocalSystem으로 실행하는 SQL Server 서비스 (MSSQL)를 변경했습니다. 이것은 나를 위해 문제를 해결했다.

    내가 무엇을 기억에서 2008 년에서 NT_SERVICE \ MSSQL $ MSSQL 벌금 등의 작업에 사용된다.

  15. ==============================

    15.나는 동일한 오류 메시지가 있고,이 스레드에 있지만 성공하지 제안 된 솔루션을 시도했다.

    나는 동일한 오류 메시지가 있고,이 스레드에 있지만 성공하지 제안 된 솔루션을 시도했다.

    나를 .XLSX 파일을 열고 .XLS로 저장됩니다에 대한 문제를 해결 어떤 파일 (2003 엑셀).

    아마도 파일이 손상 또는 다른 형식으로, 그리고 다시 고정 절약이되었다.

  16. ==============================

    16.이 내 오류 코드입니다 :

    이 내 오류 코드입니다 :

    OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" returned message "The Microsoft Access database engine could not find the object 'ByStore$'. Make sure the object exists and that you spell its name and the path name correctly. If 'ByStore$' is not a local object, check your network connection or contact the server administrator.".
    
    Msg 7350, Level 16, State 2, Procedure PeopleCounter_daily, Line 26
    
    Cannot get the column information from OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)".
    

    내 문제는 엑셀 파일 경로에없는 하였다. 그냥 할 것입니다 올바른 시트 파일을 넣어.

  17. ==============================

    17.나에게는 파일의 폴더에 권한이었다. 나는 사용자가 "모두"에 대한 모든 권한을 추가했다. 폴더 / 특성 / 보안 -> 사용자 추가 모든 사람과 모든 권한을 설정합니다.

    나에게는 파일의 폴더에 권한이었다. 나는 사용자가 "모두"에 대한 모든 권한을 추가했다. 폴더 / 특성 / 보안 -> 사용자 추가 모든 사람과 모든 권한을 설정합니다.

  18. ==============================

    18.조정 이러한 설정으로 SQL 서버 2014에서 엑셀에 연결된 서버를 때 내가 발견 한 두 개의 중요한 자명하지 설정이 있습니다 'OPENDATASOURCE FROM은 (' 'Microsoft.ACE.OLEDB.16.0' ', ...)'뿐만 아니라, '... FROM ['+ @srv_name + '] XL AS ... 데이터 ...'제대로 기능.

    조정 이러한 설정으로 SQL 서버 2014에서 엑셀에 연결된 서버를 때 내가 발견 한 두 개의 중요한 자명하지 설정이 있습니다 'OPENDATASOURCE FROM은 (' 'Microsoft.ACE.OLEDB.16.0' ', ...)'뿐만 아니라, '... FROM ['+ @srv_name + '] XL AS ... 데이터 ...'제대로 기능.

    이것은 단지 상황입니다.

    DECLARE @DB_NAME NVARCHAR(30) = DB_NAME();
    DECLARE @srv_name nvarchar(64) = N'<srv_base_name>@' + @DB_NAME; --to distinguish linked server usage by different databases
    
    EXEC sp_addlinkedserver
        @server=@srv_name,
        @srvproduct=N'OLE DB Provider for ACE 16.0',
        @provider= N'Microsoft.ACE.OLEDB.16.0',
        @datasrc= '<local_file_path>\<excel_workbook_name>.xlsx',
        @provstr= N'Excel 12.0;HDR=YES;IMEX=0'
    ;
    

    이 첫 번째 중요한 설정입니다. 심지어 다른 SQL Server 로그인에 대해 같은 SA에 대한 :

    EXEC sp_addlinkedsrvlogin @rmtsrvname = @srv_name, @locallogin = N'sa', @useself = N'False', @rmtuser = N'admin', @rmtpassword = N''
    ;
    

    이것은 두 번째 중요한 설정입니다. 1 임시 분산 쿼리를 설정하는 것은 충분하지 않습니다. 하나는 @provider에 지정된 드라이버를 명시 적으로 0으로 경우 DisallowAdHocAccess 레지스트리 키를 설정해야합니다 :

    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.DEF_INST\Providers\Microsoft.ACE.OLEDB.16.0]
    "DisallowAdhocAccess"=dword:00000000
    
  19. ==============================

    19.C에서 읽기 전용 확인란을 제거 : \ \의 AppData \ 로컬 \ 임시 사용자 \ SQL 서비스 계정 이름은 나를 위해 일했다.

    C에서 읽기 전용 확인란을 제거 : \ \의 AppData \ 로컬 \ 임시 사용자 \ SQL 서비스 계정 이름은 나를 위해 일했다.

  20. from https://stackoverflow.com/questions/26267224/the-ole-db-provider-microsoft-ace-oledb-12-0-for-linked-server-null by cc-by-sa and MIT license