문제

두 개의 프로젝트 (Word-Template 프로젝트 및 테스트를위한 VB.NET 콘솔 응용 프로그램)가 포함 된 Visual Studio 2008 솔루션이 있습니다. 두 프로젝트 모두 MS-Access 2007 데이터베이스 파일에 대한 연결을 열고 System.data.oledb에 대한 참조를 갖는 데이터베이스 프로젝트를 참조합니다. 데이터베이스 프로젝트에는 다음과 같이 데이터 테이블을 검색하는 기능이 있습니다.

 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'공급자는 로컬 컴퓨터에 등록되지 않았습니다."}

두 프로젝트 모두 동일한 참조를 가지고 있으며 콘솔 애플리케이션이 처음 썼을 때 (얼마 전에) 작동했지만 이제는 작업이 중지되었습니다. 나는 무언가를 놓치고 있어야하지만 무엇을 모른다. 어떤 아이디어?

도움이 되었습니까?

해결책

Access 2007 데이터베이스를 사용하고 동일한 오류를 받고있는 Visual Studio 2008과 함께 Visual Basic 프로그램이 있습니다. 64 비트 시스템을 실행중인 경우 고급 컴파일 구성을 프로그램 속성에서 찾은 x86로 변경하는 것이 좋습니다. 지금까지 나는 그 이후로 내 프로그램에 아무런 문제가 없었습니다.

다른 팁

기본적으로 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'라고 말하는 곳을 클릭하여 'true'로 변경하십시오.

4) 앱 풀을 다시 시작하십시오 (정지 대신 재활용을 치고 시작하여 작동 할 수 있습니다.

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

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


해결책:

그게 다야! Arjun Paudel 링크에 감사드립니다. 다음은 XNA Creator 's Club Online에서 찾은 솔루션입니다. Stephen Styrchak의 것입니다.

다음 오류는 귀하가 64 비트를 컴파일하고 있다고 믿는 것을 암시합니다.

'Microsoft .ace.oeldb.12.0'공급자는 로컬 컴퓨터에 등록되지 않았습니다.

나는 Express Edition이 없지만 2008 년 Express에서 다음 단계가 유효합니까?

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

http://social.msdn.microsoft.com/forums/en-us/vbgeneral/thread/ed374d4f-5677-41cb-bfe0-198e6810805/?prof=Required
-Arjun Paudel


~ 안에 VC# Express,이 속성은 누락되었지만 어디를보아야하는지 알고 있다면 x86 구성을 만들 수 있습니다.

그것은 긴 단계 목록처럼 보이지만 일단 이런 것들이 어디에 있는지 알면 훨씬 쉽습니다. 만있는 사람 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. Build -> Configuration Manager...
7. 프로젝트 옆의 플랫폼 열에서 Combobox를 클릭하고 "<New...>".
8. "New platform" setting, choose "x86".
9. 클릭하십시오 OK.
10. 클릭하십시오 Close.
거기, 이제 x86 구성이 있습니다! 파이처럼 쉽습니다! :-)

나는 또한 사용하는 것이 좋습니다 Configuration Manager 모든 CPU 플랫폼을 삭제합니다. 당신은 32 비트 기본 DLL (간접 종속성)에 대한 피분을 가지고 있다면 정말 원하지 않습니다.

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


나는 문제의 약간 다른 맥락에 직면 할 때이 질문을 발견하고 미래에 다른 고통스러운 영혼들에 도움이 될 것이라고 생각했기 때문에 나는 내가 chime을 생각했다.

Windows Server 2008 64 비트에서 실행되는 IIS 7.0에서 ASP.NET 앱을 호스팅했습니다.

IIS가 프로세스 신호함을 제어하기 때문에 내 경우 솔루션은 enable32bitapponwin64 설정을 true로 설정하는 것이 었습니다.http://blogs.msdn.com/vijaysk/archive/2009/03/06/iis-7-tip-2-you-can-now-run-32-bit-and-64-bit-applications-on- Same-server.aspx

IIS 6.0에서 약간 다르게 작동합니다 (Application-Pool 레벨에서 enable32bitapponwin64를 설정할 수 없습니다).http://www.microsoft.com/technet/prodtechnol/windowsserver2003/library/iis/0aafb9a0-1b1c-4a39-ac9a-994adc902485.mfr=true

나는 같은 문제가 있습니다. Windows 7 64 비트에 Office 2010 64 비트를 설치 한 다음 2007 Office System Driver : Data Connectivity 구성 요소를 설치하려고합니다.

그 후 Visual Studio 2008은 MS-Access 2007 데이터베이스 파일에 대한 연결을 엽니 다.

유사한 스택 교환 스레드에서 내 게시물을 참조하십시오 https://stackoverflow.com/a/21455677/1368849

12 개가 설치되지 않은 버전 15가 있었는데이 PowerShell 코드를 실행하여 알게되었습니다 ...

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

...이 결과를 줬습니다 (간결성을 위해 다른 데이터 소스를 제거했습니다) ...

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

.NET 애플리케이션이 포함 된 완전히 업데이트 된 Windows Vista Family 64 비트에 동일한 오류가 발생하여 32 비트로 만 컴파일했습니다. 프로그램은 64 비트 머신의 Programx86 폴더에 설치됩니다. 2007 년 액세스 데이터베이스 제공 업체가 설치된 경우 에도이 오류 메시지가 실패하며, 32 비트 앱 지원을 위해 설치된 동일한 설치, IIS 설치 및 앱 풀 세트의 SP2를 사용하여/wiothout ... 예, 모든 솔루션을 어디에서나 시도했지만 여전히 성공하지 못했습니다.

Jet4.0이 64 비트 머신에서 실패했기 때문에 앱을 Ace Ole DB.12.0으로 전환했습니다. 더 나은 것은 아닙니다. -/ 내가 찾은 가장 유망한 스레드는 다음과 같습니다.

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

그러나 64 비트 "2010 Office System Driver Beta : Data Connectivity Components"를 설치하려고하면 32 비트 사무실 응용 프로그램을 모두 제거하지 않고 64 비트 버전을 설치할 수 없으며 2010 년 32 비트 버전을 설치할 수는 없습니다. Office System Driver Beta : 데이터 연결 구성 요소는 "Microsoft.ace.oledb.12.0"이 "Microsoft.ace.oledb.14.0"대신 제공자로서 "Microsoft.ace.oledb.12.0"을 사용하여 초기 문제를 해결하지 못합니다. 해당 페이지 (및 기타)가 권장합니다.

다음 시도는이 게시물을 따르는 것입니다.

이 문제는 OLEDB32.dll 및 OLEDB32R.DLL의 잘못된 향이 서버에 등록되어 있기 때문입니다. 64 비트 버전이 등록되면 등록되지 않아야하고 대신 32 비트 버전을 등록해야합니다. 이 문제를 해결하려면 %프로그램 파일 %/공통 파일/시스템/Ole DB에 위치한 버전을 등록 해제하십시오. 그런 다음 동일한 경로에서 % 프로그램 파일 (x86) % 디렉토리에 버전을 등록하십시오.

64 비트 머신의 Jet4.0 및 OLEDB ACE 제공 업체 모두에 많은 문제가 있습니까? 다른 사람이 작동하지 않으면 해결책을 찾은 사람이 있습니까?

32 비트 데이터베이스가있는 64 비트 시스템을 실행하고 64 비트 콘솔을 실행하려는 경우 다음 패키지를 컴퓨터에 설치해야한다고 가정합니다.

  1. Microsoft Access Database Engine 2010 x86 재분배 가능하면이 설치는 다음과 같습니다.http://www.microsoft.com/download/en/details.aspx?id=13255 .
  2. Data Connectivity 구성 요소 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'플래그와 함께 명령 프롬프트를 사용하여 설치합니다. 명령 프롬프트에서 다음 명령을 실행합니다.

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top