0

SQL Server Express 2008で最も奇妙な問題が発生します(少なくとも私にとっては奇妙な問題です)。

問題は次のとおりです。

開発マシンでは、SQL Server 2008Enterpriseを使用しています....WCFサービスからデータを取得し、そのデータをデータベースに書き込みます(可能な限り単純です)...ただし、書き込み、別のスレッドで行われます。しかし、とにかく開発中に問題はありません...すべてのデータがそこにあります。

次に、リリースに組み込まれているすべてのセットアップ(接続文字列。\ SQLEXPRESS、その他の設定)をセットアップし、SQL Server Expressがインストールされているテストマシンにコピーします(アプリケーションはクライアントアプリケーションであり、Expressで動作するはずなので)... Iプログラムを実行します....プログラムはサービスからデータを取得します...そしてデータベースを見ると...私は大きな驚きに直面しています...書き込まれた行は1つだけです(最初の行はWCFサービス)。

助けていただければ幸いです...私はここで行き詰まっています。

4

4 に答える 4

2

SQL サーバーで実際に呼び出されているものをプロファイリングできますか?

SQL Server プロファイラーを開き、SQL Express インスタンスを指定して、RPC:Completed と Sql Statement Completed を取得していることを確認します。残りのデフォルトのチェックを外すことができます。これにより、サーバーでの呼び出し方法が異なる可能性があることがわかります。

その他の考え: コマンドの種類は正しいですか?

そこにどうにかこまがズレているのか。

于 2010-06-03T22:09:37.537 に答える
1

すべて(特に接続文字列)を再確認してください。問題のデバッグに役立つ可能性のあるログファイルをアプリに出力させます。

メインDBもチェックして、エントリが開発データベースに誤って書き込まれていないことを確認します。

于 2010-06-03T20:12:29.980 に答える
1

万が一設定したことがありますか(私はこれがありそうもないことを知っています)

set ROWCOUNT 1 
于 2010-06-03T20:19:45.320 に答える
0

OK、誰かがこれを面白いと思うでしょう...

徹底的な分析の後、これが起こりました:

別のスレッドで実行されていたデータベースにデータを書き込んでいたコードをGUIと同じスレッドに移動しましたが、問題なく動作します...すべてのデータがデータベースに書き込まれます。

さらに調べて、SQL Expressにはスケジューラが1つだけ(そしてもちろんプロセッサも1つなど)あるというWeb上の記事を思いついたので、データベースへの複数のスレッドの書き込みは一度にサポートされません(誰でも)他の人はこれについてもっと知っていますか?)...したがって、これに対する解決策はおそらくキューを作成し、到着したときにキューにデータを送信し、データベースにデータを1つずつ書き込むことです。

于 2010-06-04T11:49:22.827 に答える