2008-10-26 3 views
66

두 개의 프로젝트 (테스트 용 Word-Template 프로젝트 및 VB.Net 콘솔 응용 프로그램)가있는 Visual Studio 2008 솔루션이 있습니다. 두 프로젝트는 모두 MS-Access 2007 데이터베이스 파일에 대한 연결을 열고 System.Data.OleDb에 대한 참조를 갖는 데이터베이스 프로젝트를 참조합니다. 데이터베이스 프로젝트에서 다음과 같이 데이터 테이블을 검색하는 함수가 있습니다.Microsoft.ACE.OLEDB.12.0 공급자가 등록되지 않았습니다.

private class AdminDatabase 
    ' stores the connection string which is set in the New() method 
    dim strAdminConnection as string 

    public sub New() 
    ... 
    adminName = dlgopen.FileName 
    conAdminDB = New OleDbConnection 
    conAdminDB.ConnectionString = "Data Source='" + adminName + "';" + _ 
     "Provider=Microsoft.ACE.OLEDB.12.0" 

    ' store the connection string in strAdminConnection 
    strAdminConnection = conAdminDB.ConnectionString.ToString() 
    My.Settings.SetUserOverride("AdminConnectionString", strAdminConnection) 
    ... 
    End Sub 

    ' retrieves data from the database 
    Public Function getDataTable(ByVal sqlStatement As String) As DataTable 
     Dim ds As New DataSet 
     Dim dt As New DataTable 
     Dim da As New OleDbDataAdapter 
     Dim localCon As New OleDbConnection 


     localCon.ConnectionString = strAdminConnection 

     Using localCon 
      Dim command As OleDbCommand = localCon.CreateCommand() 
      command.CommandText = sqlStatement 
      localCon.Open() 
      da.SelectCommand = command 
      da.Fill(dt) 
      getDataTable = dt 
     End Using 

    End Function 
End Class 

이 함수를 Word 2007 템플릿 프로젝트에서 호출하면 모든 것이 잘 작동합니다. 오류 없음. 내가 콘솔 응용 프로그램에서 실행할 때 다음과 같은 예외

전 = {는 " 'Microsoft.ACE.OLEDB.12.0' 공급자가 로컬 컴퓨터에 등록되어 있지 않습니다."}

에게 던졌습니다

두 프로젝트의 참조가 동일하고 콘솔 응용 프로그램을 처음 작성했을 때 (얼마 전) 작동했지만 이제는 작업이 중단되었습니다. 나는 뭔가를 놓치고 있어야하지만 나는 무엇을 모른다. 어떤 아이디어?

+0

또한 동일한 문제에 직면합니다. 너 나 좀 도와 줄래? 어디에서 2007 액세스 데이터베이스 공급자의 설치 프로그램을 찾을 수 있습니까? –

+0

see -> http://stackoverflow.com/questions/6649363/ – Bernhard

답변

41

Visual Studio 2008에서 Access 2007 데이터베이스를 사용하고 동일한 오류가 발생하는 Visual Basic 프로그램이 있습니다. 64 비트 시스템을 실행하는 경우 프로그램 속성에서 x86에 대한 고급 컴파일 구성을 변경하라는 메시지가 표시되는 스레드를 발견했습니다. 지금까지 나는 내 프로그램에 아무런 문제가 없었습니다.

+4

하지만 asp.net 응용 프로그램에 대한 이것은 IIS에 의해 결정되므로이 문서를 확인하십시오. http://support.microsoft.com/kb/894435/en-us – devzero

+5

ASP에서 같은 문제가 발생했습니다. .NET 응용 프로그램 - 로컬에서 코드를 실행했지만 서버에서 실패했습니다. 2007 Office System 드라이버 : 데이터 연결 구성 요소를 여기에 설치하는 데 필요합니다. http://www.microsoft.com/downloads/en/details.aspx?FamilyID=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=en 32 비트 응용 프로그램을 허용하는 웹 사이트의 작업자 프로세스 (응용 프로그램 풀) – Keith

+3

이것은 x86을 사용할 수없는 사람들에게 도움이되지 않습니다. 64 비트 용 ACE 버전 (http://goo.gl/Cxsf1)이 있지만 호환성 문제가 있으므로 Office 2003을 제거해야합니다. – Jordan

7

데이터베이스가 32 비트이지만 콘솔이 64 비트로 실행되는 상태에서 64 비트 시스템을 실행하고 있습니까? 64 비트를 실행하는 MS Access 드라이버는 없으며보고 된 오류와 동일한 오류를보고합니다.

+0

예, 저는 64 비트 XP를 실행 중이며 이것이 정확하게 문제였습니다. 고급 컴파일 옵션의 대상 CPU를 x86 비트 응용 프로그램으로 전환하여 모든 작업이 완료되었습니다. 감사합니다 – Azim

5

솔루션 : 그것 뿐이다

! Arjun Paudel에게 감사드립니다. 다음은 XNA Creator 's Club Online에서 찾을 수있는 솔루션입니다. Stephen Styrchak입니다.

다음 오류는 64 비트 용으로 컴파일 믿고 저를 제안한다 :

'마이크로 소프트 .ACE.OELDB.12.0'제공자는

내가 그나마 로컬 컴퓨터에 등록되어 있지 않습니다

Express Edition을 가지고 있지만 2008 Express에서 유효한 단계를 따르고 있습니까?

http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/ed374d4f-5677-41cb-bfe0-198e68810805/?prof=required

http://forums.xna.com/forums/t/4377.aspx#22601

- VC# Express에서


아르 준 Paudel,이 건물은 없습니다, 그러나 당신이 어디 있는지 알고 있다면 당신은 여전히 ​​86 구성을 만들 수 있습니다.

긴 단계 목록처럼 보이지만 일단 이러한 것들이 어디에 있는지 쉽게 알게되면 훨씬 쉽습니다. VC# Express 만 가진 사람이라면 누구나 유용 할 것입니다. Configuration Manager에 대해 알게되면 다음에 훨씬 더 직관적입니다.

1. VC# Express 2005에서 Tools -> Options으로 이동하십시오.
2.옵션 대화 상자의 왼쪽 하단 모서리에 "Show all settings" 상자를 선택하십시오.
3. 왼쪽 트리보기에서 "Projects and Solutions"을 선택하십시오.
4. 오른쪽의 옵션에서 "Show advanced build configuraions."
을 클릭하십시오. 5. OK을 클릭하십시오.
6.Go에서 Build -> Configuration Manager ...
7. 프로젝트 옆의 플랫폼 열에서 콤보 상자를 클릭하고 "<New...>"을 선택하십시오.
8. "New platform" setting, choose "x86"에 있습니다.
9. OK을 클릭하십시오.
10. Close을 클릭하십시오.
이제 x86 구성을 가지고 있습니다! 파이처럼 쉽게! :-)

모든 CPU 플랫폼을 삭제하려면 Configuration Manager을 사용하는 것이 좋습니다. 32 비트 네이티브 DLL (간접적 인 종속성조차도)에 절망감이 있다면 절대 원하지 않을 것입니다.

스티븐 스티 닥 | XNA 게임 스튜디오 개발자 http://forums.xna.com/forums/p/4377/22601.aspx#22601


+0

컴파일러 대상 (x86 또는 64 비트) 변경에 대한 추가 정보 및 자세한 설명을 보내 주셔서 감사합니다. – Azim

3

나는 문제의 약간 다른 상황에 직면했을 때이 질문을 발견하기 때문에 나는 삐 소리라고 생각하고 미래에 다른 고통받는 영혼을 도와 줄 알았는데 :

Windows Server 2008 64 비트에서 실행되는 IIS 7.0에서 호스팅되는 ASP.NET 응용 프로그램을 사용했습니다. http://blogs.msdn.com/vijaysk/archive/2009/03/06/iis-7-tip-2-you-can-now-run-32-bit-and-64-bit-applications-on-the-same-server.aspx

그것은 당신이 응용 프로그램 풀에서 Enable32bitAppOnWin64을 설정할 수 없습니다 (다른 IIS 6.0에서 약간 작동합니다

IIS 프로세스의 비트 수의 제어에 있기 때문에, 내 경우에 해결책은 Enable32bitAppOnWin64 true로 설정 설정했다 수준) http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/0aafb9a0-1b1c-4a39-ac9a-994adc902485.mspx?mfr=true

52

기본적으로 64 비트 컴퓨터를 사용하는 경우 IIS 7은 기본적으로 데이터베이스 엔진이 작동하는 32 비트 응용 프로그램을 제공하지 않습니다.

1) 2007 데이터베이스 엔진이 설치되어 있는지 확인이가에서 다운로드 할 수 있습니다 : http://www.microsoft.com/downloads/details.aspx?FamilyID=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=en

2) 개방 IIS7 관리자 및 응용 프로그램 풀 영역을 열 그래서 여기에 당신이 정확히 무엇이다. 오른쪽 사이드 바에 "응용 프로그램 풀 기본값 설정"옵션이 표시됩니다. 그것을 클릭하면 옵션이있는 창이 나타납니다.

3) '32 비트 응용 프로그램 활성화'는 기본적으로 FALSE로 설정되어 있습니다. '거짓'이라고 말한 부분을 클릭하기 만하면 '참'으로 바뀝니다.

4) 앱 풀을 다시 시작합니다 (STOP 대신 RECYCLE을 누른 다음 START를 누르면 가능합니다).

5) 완료되면 오류 메시지가 사라집니다.

+0

이것은 나를 위해 일했습니다 ... Visual Studio 2010 Premium, Windows Server 2008 R2, IIS 7, 계층화 된 웹 응용 프로그램에서 WCF 사용. – longda

+0

감사합니다. 정확히 내가 필요한 것! – Andy

+0

+1, 당신의 추천이 효과가있었습니다. – Phil

1

완전히 업데이트 된 Windows Vista 제품군 64 비트에서 32 비트 만 컴파일 한 .NET 응용 프로그램과 동일한 오류가 발생했습니다. 프로그램이 64 비트 컴퓨터의 programx86 폴더에 설치됩니다. 이 오류 메시지는 2007 Access 데이터베이스 공급자가 설치된 경우에도 실패하며/SP2가 설치된 것과 IIS가 설치된 경우와 32 비트 응용 프로그램 지원이 설정된 경우 ...예. 모든 솔루션을 어디에서나 시도했지만 아직 성공하지 못했습니다.

JET4.0는 64 비트 시스템에서 실패했기 때문에 나는 ACE OLE DB.12.0에 내 응용 프로그램을 전환 - 그것은 더 나은 없다 : - :

http://ellisweb.net/2010/01/connecting-to-excel-and-access-files-using-net-on-a-64-bit-server/

/내가 찾은 가장 유망한 실이 있었다

하지만 64 비트 "2010 Office System 드라이버 베타 : 데이터 연결 구성 요소"를 설치하려고하면 모든 32 비트 Office 응용 프로그램을 제거하지 않고 64 비트 버전을 설치할 수 없음을 알리고 32 비트 버전의 2010 Office System 드라이버 베타 : 데이터 연결 구성 요소는 "Microsoft.ACE.OLEDB.14.0"대신 "Microsoft.ACE.OLEDB.12.0"을 사용하는 경우에도 초기 문제를 해결하지 않습니다. 다른 사람)는 추천한다. 인해 Oledb32.dll이와 OLEDB32r.DLL가 서버에 등록되는 잘못된 맛에

문제는 다음과 같습니다

나의 다음 시도는이 게시물을 따라하는 것입니다. 64 비트 버전이 등록 된 경우 등록을 취소하고 대신 32 비트 버전을 등록해야합니다. 이 문제를 해결하려면 % Program Files %/Common Files/System/OLE DB에있는 버전의 등록을 취소하십시오. 그런 다음 동일한 경로이지만 % Program Files (x86) % 디렉토리에 버전을 등록하십시오.

64 비트 컴퓨터에서 JET4.0 및 OLEDB ACE 공급자 모두에게 많은 문제가 발생한 적이 있습니까? 다른 사람이 없다면 누구나 해결책을 찾았습니까?

+0

여기에 유용한 정보가 있지만, 지금 알다시피이 작문 스타일은 stackexchange에서 선호하는 스타일이 아닙니다. 이걸 정리하고 (그리고 아마도 당신을 위해 일한 결과를 업데이트한다면), 이것은 특히 12.0 이후의 버전에 대한 언급이 거의 없기 때문에 질문에 추가 될 것입니다. 네트워크. 또는, 적어도, 나는 업데이 트를 주셔서 감사하겠습니다. – CWilson

2

동일한 문제가 있습니다. 필자는 Windows 7 64 비트를 Windows 7 64 비트에 설치하려고 시도하고 2007 Office System Driver : 데이터 연결 구성 요소를 설치하려고합니다.

그런 다음 Visual Studio 2008에서 MS-Access 2007 데이터베이스 파일에 대한 연결을 열 수 있습니다.

2

은 ...

(New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION 

... 내가이 PowerShell에서 코드를 실행하여 발견 버전 (15),하지 설치 (12)를 가지고 비슷한 스택 교환 스레드 https://stackoverflow.com/a/21455677/1368849

에 내 게시물을 참조하는 나에게 내가 가정하고 (나는 간결에 대한 다른 데이터 소스를 제거했습니다)이 결과 ...

SOURCES_NAME    SOURCES_DESCRIPTION                  
------------    -------------------                  
Microsoft.ACE.OLEDB.15.0 Microsoft Office 15.0 Access Database Engine OLE DB Provider 
1

을 준 당신은 32 비트 데이터베이스와 64 비트 시스템을 실행하려고하는 경우 64 비트 콘솔을 실행하려면 다음 패키지를 시스템에 설치해야합니다. http://www.microsoft.com/download/en/details.aspx?id=13255 :

  1. 은 Microsoft Access 데이터베이스 엔진 2010 86 재배포를 설치, 소프트웨어 설치에 사용할 수 있습니다.
  2. Office 2007의 데이터 연결 구성 요소 인이 설치는 http://www.microsoft.com/download/en/confirmation.aspx?id=23734에서 사용 가능한 입니다.
  3. Microsoft Access 데이터베이스 엔진 2010 x64 재배포 가능 파일. 패키지를 로컬에서 다운로드하고 패시브 플래그로 실행해야합니다. 여기에서 설치를 다운로드 할 수 있습니다. http://www.microsoft.com/en-us/download/details.aspx?id=13255 '/ passive'플래그와 함께 명령 프롬프트를 사용하여 설치 중입니다. 명령 프롬프트에서 다음 명령을 실행하십시오. 'AccessDatabaseEngine_x64.exe/passive '

참고 : 순서가 중요해 보입니다. 이미 설치 한 것이 있으면 위의 단계를 제거하고 따르십시오.