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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.29472 の関連記事表示

<< 0 >>
■29472  コミットをしたがDBに反映されていない
□投稿者/ ダメPG -(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に登録されない事があるのでは、と考えています。
    皆様の中に同じ経験された方や、対応方法を知っている方がいましたら、どう対処すれば良いかを教えてください。
    よろしくお願いします。



      
      
親記事 /過去ログ53より / 関連記事表示
削除チェック/

■29487  Re[1]: コミットをしたがDBに反映されていない
□投稿者/ やじゅ -(2008/12/10(Wed) 11:41:12)
>
    No29472 (ダメPG さん) に返信

    DBの例外エラーが発生したけど、握りつぶしているとか
記事No.29472 のレス /過去ログ53より / 関連記事表示
削除チェック/

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

    なんか仕事の丸投げっぽいですが、まずは客先ではなく
    自分のところに再現環境を構築することをお勧めします。
記事No.29472 のレス /過去ログ53より / 関連記事表示
削除チェック/

■29519  Re[3]: コミットをしたがDBに反映されていない
□投稿者/ ダメPG -(2008/12/10(Wed) 13:08:31)
    やじゅさん、SHOさん
    早速、お返事ありがとうございます。

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

記事No.29472 のレス /過去ログ53より / 関連記事表示
削除チェック/

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

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

    とりあえず .SHO さんの

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

    に私も同意しておきます。
記事No.29472 のレス /過去ログ53より / 関連記事表示
削除チェック/

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

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


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

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



記事No.29472 のレス /過去ログ53より / 関連記事表示
削除チェック/

■29524  Re[1]: コミットをしたがDBに反映されていない
□投稿者/ はつね -(2008/12/10(Wed) 13:21:09)
>
    No29472 (ダメPG さん) に返信
    > 2.コミットもされている。
    >   CN.CommitTrans()
    >   (コミットの下にあるメッセージがログに表示されている)

    BeginTransは記録していますか?
    BeginTransの数とCommitTransの数はあっていますか?
    BeginTransしているのにCommitTransの数が足りなくてプログラムを終了していたらRollBackしちゃいます。
記事No.29472 のレス /過去ログ53より / 関連記事表示
削除チェック/

■29533  Re[1]: コミットをしたがDBに反映されていない
□投稿者/ 魔界の仮面弁士 -(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
    のような理由により、データの更新タイミングがずれる事はありますけれどね。
記事No.29472 のレス /過去ログ53より / 関連記事表示
削除チェック/

■29562  Re[2]: コミットをしたがDBに反映されていない
□投稿者/ ダメPG -(2008/12/10(Wed) 17:45:11)
    はつねさん、ぽぴ王子さん、魔界の仮面弁士さん
    貴重なご意見ありがとうございました。

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

    魔界の仮面弁士さん
    参考にさせて頂きます。
    (リンク先の内容を理解するのに時間がかかりそうです。)
記事No.29472 のレス /過去ログ53より / 関連記事表示
削除チェック/

■29661  Re[3]: コミットをしたがDBに反映されていない
□投稿者/ ダメPG -(2008/12/12(Fri) 09:29:17)
    No29562 (ダメPG さん) に返信
    > はつねさん、ぽぴ王子さん、魔界の仮面弁士さん
    > 貴重なご意見ありがとうございました。
    >
    > はつねさん
    > >>BeginTransは記録していますか?
    >  今回は、入っていませんでした。よって、BeginTransの前後にログを追加しました。
    > >>BeginTransの数とCommitTransの数はあっていますか?
    >  これは、問題なかったです。
    >
    > 魔界の仮面弁士さん
    > 参考にさせて頂きます。
    > (リンク先の内容を理解するのに時間がかかりそうです。)
    >
記事No.29472 のレス / END /過去ログ53より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -