두 프로젝트 (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 템플릿 프로젝트에서이 함수를 호출하면 모든 것이 잘 작동합니다. 오류 없음. 하지만 콘솔 응용 프로그램에서 실행할 때 다음 예외가 throw됩니다.
ex = { "Microsoft.ACE.OLEDB.12.0 ' 제공 업체가 로컬 컴퓨터. "}
두 프로젝트 모두 동일한 참조 정보를 갖고 콘솔 애플리케이션은 처음 작성한 (얼마 전) 작업을했지만 지금은 작동을 멈췄습니다. 나는 뭔가를 놓치고 있어야하지만 나는 무엇을 모른다. 어떤 아이디어?
Visual Studio 2008에서 Access 2007 데이터베이스를 사용하고 같은 오류가 발생하는 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로 설정되어 있습니다. '거짓'이라고 말한 부분을 클릭하기 만하면 '참'으로 바뀝니다.
4) 응용 프로그램 풀을 다시 시작합니다 (STOP, START 대신 RECYCLE을 눌러이 작업을 수행 할 수 있습니다).
5) 완료하고 오류 메시지가 사라집니다.
32 비트를 실행하는 데이터베이스와 64 비트를 실행하는 콘솔을 사용하여 64 비트 시스템을 실행하고 있습니까? 64 비트를 실행하는 MS Access 드라이버는 없으며보고 된 오류와 동일한 오류를보고합니다.
해결책:
그게 다야! Arjun Paudel에게 감사드립니다. 다음은 XNA Creator 's Club Online에서 찾을 수있는 솔루션입니다. Stephen Styrchak입니다.
다음 오류는 64 비트 용으로 컴파일하고 있다고 생각합니다.
'Microsoft .ACE.OELDB.12.0'공급자가 로컬 컴퓨터에 등록되지 않았습니다.
나는 표현판을 가지고 있지 않지만 2008 년 표현에서 유효한 단계를 따르고 있습니까?
http://forums.xna.com/forums/t/4377.aspx#22601
에서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.ClickOK
.
6. 이동Build -> Configuration Manager
...
7. 프로젝트 옆의 플랫폼 열에서 콤보 박스를 클릭하고"<New...>"
.
8.In"New platform" setting, choose "x86"
.
9.ClickOK
.
10.ClickClose
.
이제 x86 구성을 갖게되었습니다! 파이처럼 쉽게! :-)
나는 또한 사용하는 것이 좋습니다Configuration Manager
모든 CPU 플랫폼을 삭제합니다. 32 비트 네이티브 DLL (간접적 인 종속성조차도)에 절망감이 있다면 절대 원하지 않을 것입니다.
Stephen Styrchak | XNA Game Studio 개발자http://forums.xna.com/forums/p/4377/22601.aspx#22601
문제의 약간 다른 상황에 직면 할 때이 질문을 발견하고 앞으로 다른 고통받는 영혼을 도울 것이라고 생각했기 때문에 차임을하고 싶다고 생각했습니다.
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-the-same-server.aspx
IIS 6.0에서 약간 다르게 작동합니다 (응용 프로그램 풀 수준에서 Enable32bitAppOnWin64를 설정할 수 없음)http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/0aafb9a0-1b1c-4a39-ac9a-994adc902485.mspx?mfr=true
나는 똑같은 문제를 겪고있다. 필자는 Windows 7 64 비트를 Windows 7 64 비트에 설치하려고 시도하고 2007 Office System Driver : 데이터 연결 구성 요소를 설치하려고합니다.
그 후에 Visual Studio 2008은 MS-Access 2007 데이터베이스 파일에 대한 연결을 열 수 있습니다.
비슷한 스택 교환 스레드에 내 게시물을 참조하십시오https://stackoverflow.com/a/21455677/1368849
나는이 PowerShell 코드를 실행하여 발견 한 12 개가 아닌 15 버전을 설치했다.
(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
완전히 업데이트 된 Windows Vista 제품군 64 비트에서 .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 비트 버전을 설치할 수 없음을 알리고 2010 년 32 비트 버전을 설치합니다 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 공급자 모두에게 많은 문제가 발생한 사람이 있습니까? 다른 사람이 없다면 누구나 해결책을 찾았습니까?
32 비트 데이터베이스로 64 비트 시스템을 실행 중이고 64 비트 콘솔을 실행하려는 경우 다음 패키지를 시스템에 설치해야한다고 가정합니다.
참고 : 주문이 중요해 보입니다. 이미 설치되어있는 것이 있으면 위의 단계를 제거하고 따르십시오.