none
削除クエリがうまくいかない RRS feed

  • 質問

  • 環境:ACCESS2003(.adp)+SQLServer2005

     

    お世話になります。

     

    初心者につき情報不足などございましたらご指摘のほどお願い致します。

     

    テーブルAに対して、複数人で同時にレコード追加、削除を行っております。

     

    1.テーブルAにレコードaaを追加 (Insert)

    2.追加レコードaaをACCESSのフォーム上で編集

    3.レコードaaを別のテーブルBへ保存

    4.テーブルAのレコードaaを削除 (Deleteストアド)

     

    特にエラーも出ずに処理が終わるのですが、

    テーブルAをみると、レコードaaが残っている場合があり

    4.のDeleteストアドがうまくいってないようなのですが、デバッグすると問題なく動き

    現象が再現できないのです。

    (もう一度、同じことを実行すると今度はうまくいきます。)

     

    ストアドにはパラメーター異常(Nullや長さ0の文字列)が入った場合は

    アラームをあげるようにしており、テストだとうまくアラームが起動してますので

    パラメーター異常もないと仮定します。

    また、デッドロックなども発生してません。

     

     

    質問1.

    エラーが出ていないので、各クエリの要求は、ACCESSから発行され

    SQLserverに届いているのだと思うのですが、、これを確認するには

    サーバー側のどこをみればよいのでしょうか?

    ACCESS側でも発行したか確認することはできますでしょうか?

     

    質問2.

    仮に複数人で同時に利用している時に発生していると仮定した場合、

    一般的にどのようなことが原因と推測できますでしょうか?

    初心者につき、どのあたりを探ってみればいいのか見当がつかず困っております。

     

    質問3.

    他に何かアドバイスなどあればお願いします。

     

     

     

     

    2008年12月20日 10:31

回答

  • こんにちは、naginoです。

    SQL Server で実行されたクエリを確認するのであれば、SQL トレースやトリガなど色々方法がありますが、SQL Server Profiler を使用するのが一番手軽でしょうか。
    とりあえずは、ツールを起動して実行し、適当なところで停止させたあと、SQL:BatchCompleted の TextData を追っていけば、実行されたクエリを追うことができます。
    設定による使いこなしについてのあれこれや、使用による弊害(おおむねデータベースに対しある程度の負荷がかかります)など色々ありますが、ミッションクリティカルでなければそれほどクリティカルな事項ではないので、指し当たっては詳細は省きます。

    今回 Access のフォームを使用されているということですが、掲題の現象が以下の手順で再現しますでしょうか。
    1. テーブル A にレコード aa を追加 (Insert)

    2. 追加レコード aa を Access のフォーム上で開いたままにする

    3. レコード aa を別のテーブル B へ保存

    4. テーブル A のレコード aa を削除 (Delete ストアド)

    5. 開いたままの Access フォームで保存


    ご参考になれば幸いです。


    2008年12月20日 16:06

すべての返信

  • こんにちは、naginoです。

    SQL Server で実行されたクエリを確認するのであれば、SQL トレースやトリガなど色々方法がありますが、SQL Server Profiler を使用するのが一番手軽でしょうか。
    とりあえずは、ツールを起動して実行し、適当なところで停止させたあと、SQL:BatchCompleted の TextData を追っていけば、実行されたクエリを追うことができます。
    設定による使いこなしについてのあれこれや、使用による弊害(おおむねデータベースに対しある程度の負荷がかかります)など色々ありますが、ミッションクリティカルでなければそれほどクリティカルな事項ではないので、指し当たっては詳細は省きます。

    今回 Access のフォームを使用されているということですが、掲題の現象が以下の手順で再現しますでしょうか。
    1. テーブル A にレコード aa を追加 (Insert)

    2. 追加レコード aa を Access のフォーム上で開いたままにする

    3. レコード aa を別のテーブル B へ保存

    4. テーブル A のレコード aa を削除 (Delete ストアド)

    5. 開いたままの Access フォームで保存


    ご参考になれば幸いです。


    2008年12月20日 16:06
  • こんにちは。中川俊輔です。

     

    naginoさん、回答ありがとうございます。

     

    モモンガ1234さん、フォーラムのご利用ありがとうございます。

    その後いかがでしょうか?

    有用な情報と思われたため、naginoさんの回答へ回答済みチェックをつけさせていただきました。

    追加の質問等ありましたら、ぜひ投稿してみてください。

     

    今後ともフォーラムをよろしくお願いします。

    それでは!

    2009年1月6日 7:20