問題タブ [aceoledb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
64-bit - 64 ビット ACE OLEDB プロバイダーが SysFreeString でアクセス違反を引き起こす
私のアプリケーションでは、従来の理由から MS Access の mdb ファイルを使用しています。次の接続文字列で ADO を使用してデータベースに接続します。
Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=Dummy.mdb
最近、アプリケーションを 64 ビットに移植し始めました。そのため、Jet OLEDB プロバイダーは 64 ビット システムでは使用できません。次の接続文字列で ACE OLEDB プロバイダーを使用しました。
Provider=Microsoft.ACE.OLEDB.12.0;Persist Security Info=False;Data Source=Dummy.mdb
アプリケーションは、MS XML DOM を使用して XML ファイルを操作します。64 ビット バージョンは、MS XML ラッパー メソッドの 1 つから呼び出される SysFreeString のアクセス違反例外でクラッシュすることがあります。32 ビット版ではこれらの問題はありません。問題をテスター アプリケーションに抽出しました。
クラッシュ コール スタックは次のとおりです。
クラッシュ時、DB スレッドは常に次の状態にあります。
回避策として、空のデータベース ファイルへの接続を 1 つ開いたままにしておくと、実際のデータベース ファイルへの接続を開いたり閉じたりすることができ、アプリケーションがクラッシュしないことがわかりました。とにかく、クラッシュの実際の原因を理解したいと思います。提案をいただければ幸いです。
私の構成は次のとおりです。
Microsoft Visual Studio 2005 バージョン 8.0.50727.4039 (QFE.050727-4000)
Windows Server 2008 R2 Standard 64 ビット
プロセッサ: Intel(R) Xeon(R) E5645 @ 2.40GHz
メモリ: 16.0 GB
sql-server - 'Microsoft.ACE.OLEDB.16.0' プロバイダーがローカル コンピューターに登録されていません。(システム.データ)
MSSQL Server Data Import (つまり SSIS パッケージ) を介して Excel に接続しようとすると、このエラーが発生します。Microsoft.ACE.OLEDB.16.0
プロバイダがローカル マシンに登録されていません。( System.Data
)
同じバージョンではありません。他のパッチが必要だと思います