0

Windows 7 の SQLServerCE SDF ファイルで別のユーザーと同じ問題を抱えているようですが、そのスレッドからのアドバイスは私の問題を解決していません。

これは、SQL Server CE v3.1 (DLL バージョン 3.0.5300.0) に関連しています。これにより、Windows XP 32 ビット マシンでユーティリティを使用して SDF ファイルをビルドできますが、両方の Win 7 Dev マシンで同じコンパイル済みコードと DLL を使用します。 & スタンドアロンの Win 8 マシンでは、デバイス上でデータベースを正しくクエリできません。

例を挙げます。

SELECT Name FROM USERS WHERE Name = 'Joey'

DB から 1 つの結果を返す必要があります。Windows XP マシンでコンパイルされた場合は動作しますが、Windows 7/8 マシンでコンパイルされた場合は読み取られず、結果セットは 0 です。

すべてのクエリが影響を受けるわけではないため、これは奇妙な動作です。同じテーブルが別の where 句でクエリされた場合、結果は異なります。VS 2005 でファイルを直接チェックするか、.SDF ファイルを読み取るために作成したユーティリティを使用して、クエリが Windows 7/8 の両方で正常に動作することを確認できます。

これは、SDF ファイルが Windows 6.5 デバイスにコピーされた場合にのみ問題になるようです。これには、ファイル SQL Server CE v3.1 (DLL バージョン 3.0.5300.0) を構築したアプリケーションと同じ DLL があります。

確認したところ、x64 / x32 アーキテクチャに依存していないことがわかりました。これは、32 ビットまたは 64 ビットの Win 7 または Win XP マシンでビルドした場合と同じ結果であるためです。

前回の投稿から、MS からの簡潔だが役立つ情報を見ました ( http://blogs.msdn.com/b/sqlservercompact/archive/2009/04/01/after-moving-the-database-from-one-platform -to-other-the-first-sqlceconnection-open-takes-more-time.aspx )

これに対する解決策を探していますが、Visual Studio のデバイス (モジュールなど) ウィンドウで実行されている DLL バージョンを確認する方法など、追加情報があれば役立ちます。

4

1 に答える 1

0

SQL Server CE の初期バージョン (< 3.0.5300.0) を使用しなければならないという不運に見舞われた場合、これは興味深い問題です。当時は制限がありましたが、解決までに時間がかかりました.

デバイスのすべてを再確認しました。現在、インストーラー パッケージには 3.0.5300.0 用の適切な DLL が含まれていましたが、これらはアプリケーション ディレクトリ "$\DEVICE\Program Files\My Application" にコピーされませんでした。Windows 7/8 でデータベースをコンパイルし、そのデータベースを Windows 6.5 デバイスで動作させるには、デスクトップ アプリケーションと Windows デバイスの両方に正しいファイルがあることを手動で確認する必要がありました。

両方のアプリケーションに含めたファイルは次のとおりです。

  • sqlceca30.dll
  • sqlcecompact30.dll
  • sqlceer30EN.dll
  • sqlceme30.dll
  • sqlceoledb30.dll
  • sqlceqp30.dll
  • sqlcese30.dll
  • System.Data.SqlServerCe.dll

それらのバージョンは 3.0.5300.0 で、日付は 2006 年 12 月 22 日に変更されています。以前のバージョンでコンパイルした場合、「C:\Program Files (x86)\Microsoft SQL Server Compact Edition\v3.1」から入手しました (とにかく私にとって)失敗しました。

私はそこにあまり見られなかったので、これで立ち往生する可能性のある他の誰かに役立つことを願っています.

于 2013-10-31T11:51:25.707 に答える