C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: コミットをしたがDBに反映されていない


(過去ログ 53 を表示中)

[トピック内 10 記事 (1 - 10 表示)]  << 0 >>

■29472 / inTopicNo.1)  コミットをしたがDBに反映されていない
  
□投稿者/ ダメPG (1回)-(2008/12/10(Wed) 11:03:42)

分類:[VB.NET/VB2005 以降] 

使用環境
VB.NET2008とACCESS2008をWinXP上で実行
VBからADO(ActiveX Data Objects 2.8 Library)を使って、ACCESSに接続している。
VB上でSQLを作成し、ADO.ExecuteでACCESSのDBに対してIOをしている。

今、客先で以下のような現象が発生していて対処に苦慮しています。
申し訳ありませんが、皆様の知恵をお借りしたくて書込みしました。

現象としては、プログラムから入力されたデータがDBに登録されていない。
時系列に説明いたしますと
1.9:00〜11:50
  お客様が伝票を入力

2.11:50〜12:50
  プログラムを終了させて、昼休み

3.12:50〜13:35
  お客様が伝票を入力
  (1)出荷日11/5のデータを登録
  (2)再度、登録モードで出荷日11/5のデータを登録しようとして、「存在しています。」とエラー表示
     (この時点では、(1)で登録されたデータは存在している。)

4.13:35
  一度プログラムを終了させる。

5.13:36
  再度、時系列の3(2)の操作を行ったところ、データが登録された。
  (この時点で、3で入力されたデータ消えていると思われる。)

6.13:50
  当方にお客様から連絡が来る。

調査の結果、12:50〜13:35に入力したデータが、消えていました。
(DBに存在していない)
ログで確認したところ
1.登録のSQLは正しく発行されている。
  Call CN.Execute(Sql)

2.コミットもされている。
  CN.CommitTrans()
  (コミットの下にあるメッセージがログに表示されている)

3.登録されたデータに対して、削除した形跡はない。(delete文の発行はなし)

4.時系列の4で、プログラムを終了したことにより、メモリ上に保存されていた登録データが解放されたのでは、と考えています。

5.この現象は、常に起こる現象ではない。(午前中に登録したデータは正常に登録されている。)

いろいろ考えた結果、何かのタイミングでコミットを実行したが、正常にDBに登録されない事があるのでは、と考えています。
皆様の中に同じ経験された方や、対応方法を知っている方がいましたら、どう対処すれば良いかを教えてください。
よろしくお願いします。



  
  
引用返信 編集キー/
■29487 / inTopicNo.2)  Re[1]: コミットをしたがDBに反映されていない
□投稿者/ やじゅ (851回)-(2008/12/10(Wed) 11:41:12)
やじゅ さんの Web サイト
No29472 (ダメPG さん) に返信

DBの例外エラーが発生したけど、握りつぶしているとか

引用返信 編集キー/
■29489 / inTopicNo.3)  Re[2]: コミットをしたがDBに反映されていない
□投稿者/ .SHO (355回)-(2008/12/10(Wed) 11:45:24)
> ■No29472 (ダメPG さん) に返信

なんか仕事の丸投げっぽいですが、まずは客先ではなく
自分のところに再現環境を構築することをお勧めします。
引用返信 編集キー/
■29519 / inTopicNo.4)  Re[3]: コミットをしたがDBに反映されていない
□投稿者/ ダメPG (2回)-(2008/12/10(Wed) 13:08:31)
やじゅさん、SHOさん
早速、お返事ありがとうございます。

>>DBの例外エラーが発生したけど、握りつぶしているとか
これについては、電話で確認しましたが「エラーは起きていない」との返事でした。


引用返信 編集キー/
■29522 / inTopicNo.5)  Re[1]: コミットをしたがDBに反映されていない
□投稿者/ はつね (887回)-(2008/12/10(Wed) 13:19:14)
はつね さんの Web サイト
No29472 (ダメPG さん) に返信
> いろいろ考えた結果、何かのタイミングでコミットを実行したが、正常にDBに登録されない事があるのでは、

プログラム終了時にMDBファイルのバックアップしてたりしてませんか?
(1) 11:50の終了でバックアップ
(2) 13:35の終了でバックアップ
(3) なんらかのミスやバグなどにより(1)でとったバックアップファイルで最新ファイルを上書き
(4) (3)によりデータロスト


>>>DBの例外エラーが発生したけど、握りつぶしているとか
>これについては、電話で確認しましたが「エラーは起きていない」との返事でした。

口頭ではなくログなどで確認すべきかと思います「握りつぶして」には人為的隠蔽も含まれます。




引用返信 編集キー/
■29523 / inTopicNo.6)  Re[4]: コミットをしたがDBに反映されていない
□投稿者/ ぽぴ王子 (421回)-(2008/12/10(Wed) 13:21:03)
ぽぴ王子 さんの Web サイト
No29519 (ダメPG さん) に返信
> やじゅさん、SHOさん
> 早速、お返事ありがとうございます。
>
> >>DBの例外エラーが発生したけど、握りつぶしているとか
> これについては、電話で確認しましたが「エラーは起きていない」との返事でした。

いや…起きているかどうかではなくて。
「内部的に起きている」けれども「どこかで握りつぶしている」ので、エラーにならない
だけで何かマズいことになっているのでは?という指摘だと思います。
なので、逆に「起きていない」というのは、マズいことになっている可能性が高くなっている
ということなのではないかと。

とりあえず .SHO さんの

> なんか仕事の丸投げっぽいですが、まずは客先ではなく
> 自分のところに再現環境を構築することをお勧めします。

に私も同意しておきます。
引用返信 編集キー/
■29524 / inTopicNo.7)  Re[1]: コミットをしたがDBに反映されていない
□投稿者/ はつね (888回)-(2008/12/10(Wed) 13:21:09)
はつね さんの Web サイト
No29472 (ダメPG さん) に返信
> 2.コミットもされている。
>   CN.CommitTrans()
>   (コミットの下にあるメッセージがログに表示されている)

BeginTransは記録していますか?
BeginTransの数とCommitTransの数はあっていますか?
BeginTransしているのにCommitTransの数が足りなくてプログラムを終了していたらRollBackしちゃいます。

引用返信 編集キー/
■29533 / inTopicNo.8)  Re[1]: コミットをしたがDBに反映されていない
□投稿者/ 魔界の仮面弁士 (941回)-(2008/12/10(Wed) 14:08:03)
# 2008 + ADO という組み合わせの時点で、既に危なっかしい気も…。

No29472 (ダメPG さん) に返信
> 1.登録のSQLは正しく発行されている。
>   Call CN.Execute(Sql)
Command ではなく、Connection ですか?
データ中の「'」「"」「|」などの対処漏れを防ぐためにも、SQL で更新する場合は
パラメータクエリにした方が安全ですよ。

> 2.コミットもされている。
>   CN.CommitTrans()
>   (コミットの下にあるメッセージがログに表示されている)
今更ですが、ADO の動作ログを取るなら、ADODB.Connection を WithEvent し、
イベントを使って収集すると楽かと。

> 4.時系列の4で、プログラムを終了したことにより、メモリ上に保存されていた登録データが解放されたのでは、と考えています。
それは考えにくいと思いますが……気になるのであれば、念のために
更新とコミットを行った後、プログラムを終了させるという動作を繰り返し行い、
同じ現象が起きるかどうか、社内テストしてみては如何でしょう。

その結果、本当にメモリ上の情報が失われるという状況がありえたのであれば、ADODB を
使う際に、サーバーカーソルモードを利用しているかどうかも確認してみてください。
クライアントカーソルだと、メモリ上に保持される情報量が多いはずなので。


> いろいろ考えた結果、何かのタイミングでコミットを実行したが、正常にDBに登録されない事があるのでは、と考えています。
Jet の問題だけではなく、プログラムの問題や、ユーザーの勘違いに起因している可能性も
考慮せねばならないので、掲示板を見ている第三者には判断のしようが無い気がします。

一応、今回の現象に当てはまるかどうかは分かりませんけれども、
http://www.canalian.com/workshop/access/JetCache.html
のような理由により、データの更新タイミングがずれる事はありますけれどね。
引用返信 編集キー/
■29562 / inTopicNo.9)  Re[2]: コミットをしたがDBに反映されていない
□投稿者/ ダメPG (3回)-(2008/12/10(Wed) 17:45:11)
はつねさん、ぽぴ王子さん、魔界の仮面弁士さん
貴重なご意見ありがとうございました。

はつねさん
>>BeginTransは記録していますか?
 今回は、入っていませんでした。よって、BeginTransの前後にログを追加しました。
>>BeginTransの数とCommitTransの数はあっていますか?
 これは、問題なかったです。

魔界の仮面弁士さん
参考にさせて頂きます。
(リンク先の内容を理解するのに時間がかかりそうです。)

引用返信 編集キー/
■29661 / inTopicNo.10)  Re[3]: コミットをしたがDBに反映されていない
□投稿者/ ダメPG (5回)-(2008/12/12(Fri) 09:29:17)
No29562 (ダメPG さん) に返信
> はつねさん、ぽぴ王子さん、魔界の仮面弁士さん
> 貴重なご意見ありがとうございました。
>
> はつねさん
> >>BeginTransは記録していますか?
>  今回は、入っていませんでした。よって、BeginTransの前後にログを追加しました。
> >>BeginTransの数とCommitTransの数はあっていますか?
>  これは、問題なかったです。
>
> 魔界の仮面弁士さん
> 参考にさせて頂きます。
> (リンク先の内容を理解するのに時間がかかりそうです。)
>
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -