68

2つのプロジェクト(Word-Templateプロジェクトとテスト用のVB.Netコンソールアプリケーション)を備えたVisualStudio2008ソリューションがあります。どちらのプロジェクトも、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テンプレートプロジェクトからこの関数を呼び出すと、すべてが正常に機能します。エラーはありません。しかし、コンソールアプリケーションから実行すると、次の例外がスローされます

ex ={"'Microsoft.ACE.OLEDB.12.0'プロバイダーはローカルマシンに登録されていません。"}

両方のプロジェクトの参照は同じで、コンソールアプリケーションは最初に作成したとき(しばらく前)は機能していましたが、現在は機能していません。私は何かが足りないに違いないが、何がわからない。何か案は?

4

9 に答える 9

53

基本的に、64 ビット マシンを使用している場合、IIS 7 は (既定では) データベース エンジンが動作する 32 ビット アプリを提供しません。だからここにあなたがすることは正確にあります:

1) 2007 データベース エンジンがインストールされていることを確認します。これは次の URL からダウンロードできます

2) IIS7 マネージャーを開き、[アプリケーション プール] 領域を開きます。右側のサイドバーに、「アプリケーション プールの既定値を設定する」というオプションが表示されます。それをクリックすると、ウィンドウがポップアップしてオプションが表示されます。

3) 「32 ビット アプリケーションを有効にする」という 2 番目のフィールドは、おそらくデフォルトで FALSE に設定されています。「false」と表示されている場所をクリックするだけで、「true」に変更できます。

4) アプリケーション プールを再起動します (これを行うには、STOP の代わりに RECYCLE を押してから START を押します。これも機能します)。

5) 完了すると、エラー メッセージが消えます。

于 2010-04-15T20:11:13.417 に答える
43

Access2007データベースを使用するVisualStudio2008を使用したVisualBasicプログラムがあり、同じエラーが発生していました。64ビットシステムを実行している場合は、プログラムのプロパティにあるx86に高度なコンパイル構成を変更するようにアドバイスするスレッドをいくつか見つけました。それ以来、これまでのところプログラムに問題はありません。

于 2009-01-26T03:45:22.880 に答える
7

データベースが 32 ビットで実行されているが、コンソールが 64 ビットで実行されている 64 ビット システムを実行していますか? 64 ビットを実行し、報告されたものと同じエラーを報告する MS Access ドライバーはありません。

于 2008-10-26T22:19:58.000 に答える
5

解決:

それでおしまい!リンクを提供してくれた Arjun Paudel に感謝します。XNA Creator's Club Online で見つけたソリューションを次に示します。Stephen Styrchakによるものです。

次のエラーは、64 ビット用にコンパイルしていると思われることを示唆しています。

「Microsoft .ACE.OELDB.12.0」プロバイダがローカル マシンに登録されていません

私は Express Edition を持っていませんが、次の手順は 2008 Express でも有効ですか?

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

http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/ed374d4f-5677-41cb-bfe0-198e68810805/?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.Clickというボックスにチェックを入れますOK
6. に移動しBuild -> Configuration Managerます... 7.
プロジェクトの横にある [プラットフォーム] 列で、コンボボックスをクリックして を選択します"<New...>"
8.で"New platform" setting, choose "x86"
9. をクリックしOKます。
10.をクリックしますClose
これで、x86 構成ができました。やさしい!:-)

Configuration ManagerAny CPU プラットフォームの削除にも使用することをお勧めします。32 ビットのネイティブ DLL に依存関係がある場合 (間接的な依存関係であっても)、それは本当に望ましくありません。

スティーブン・スティルチャク | XNA Game Studio 開発者 http://forums.xna.com/forums/p/4377/22601.aspx#22601


于 2009-12-12T16:55:44.687 に答える
3

問題のわずかに異なるコンテキストに直面したときにこの質問を見つけ、将来他の苦しめられた魂を助けるかもしれないと思ったので、私はチャイムを鳴らそうと思いました:

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 を設定することはできません) 。 mfr=真

于 2010-01-29T12:36:57.557 に答える
2

私は同じ問題を抱えています。Windows 7 64 ビットに Office 2010 64 ビットをインストールしてから、2007 Office System Driver : Data Connectivity Components をインストールしようとしています。

その後、Visual Studio 2008 は MS-Access 2007 データベース ファイルへの接続を開くことができます。

于 2010-05-14T02:42:00.150 に答える
2

同様の Stack Exchange スレッドで私の投稿を参照してください 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
于 2014-01-30T11:52:50.090 に答える
1

完全に更新された Windows Vista ファミリ 64 ビットで、32 ビットのみにコンパイルした .NET アプリケーションで同じエラーが発生しました。プログラムは 64 ビット マシンの programx86 フォルダーにインストールされています。2007 アクセス データベース プロバイダーがインストールされていても、同じ 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 Driver Beta: Data Connectivity Components」をインストールしようとすると、すべての 32 ビット Office アプリケーションをアンインストールせずに 64 ビット バージョンをインストールすることはできず、32 ビット バージョンの 2010 をインストールできないことが示されます。 Office System Driver Beta: データ接続コンポーネントは、そのページ (およびその他) が推奨する "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 プロバイダーの両方で多くの問題を抱えた人は他にいますか? 他のどれも機能しない場合、誰かが解決策を見つけましたか?

于 2010-04-26T10:18:07.930 に答える
1

32 ビット データベースで 64 ビット システムを実行していて、64 ビット コンソールを実行しようとしている場合、次のパッケージをマシンにインストールする必要があると想定しています。

  1. Microsoft Access データベース エンジン 2010 x86 再頒布可能パッケージをインストールします。このインストールは http://www.microsoft.com/download/en/details.aspx?id=13255で入手できます。
  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」

注: 順序は重要なようです。既に何かをインストールしている場合は、アンインストールして上記の手順に従ってください。

于 2016-02-10T15:23:49.600 に答える