ホーム   フォーラム   FAQ
 
メインメニュー
ログイン
ユーザー名:

パスワード:


パスワード紛失

DBエラー デッドロックについて

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています
depth:
0
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2009-6-1 17:03
AlphaHoshino  常連   投稿数: 51
こんにちは、お世話になります。
表題の件について投稿いたします。

OS:XP
Magic:V10.1SP2a
データベース:SQL2005

管理表の印刷処理で時々下記のようなエラーとなり、終了してしまいます。
『トランザクションが、ロック個のリソースで他のプロセスとデッドロックして、
このトランザクションがデッドロックの対象となりました。トランザクションを再実行してください。
ファイルマネージャの異常です。』

簡単な処理の流れとしては、
・印刷ワークの削除
・トランやサマリを読み込み、ワークへ更新
・ワークを読み込み印刷処理
となっており、トランやサマリへ更新はしておらず、
トランザクションは特にかけていません(トランザクション開始はNo)
ただ絞り込む項目が多く、ワーク作成処理だけで10個のタスクをコールし、
内9個はSQLタスクになっています。

常にエラーとなるわけではないので、原因がつかめない状態です。
何かお気づきの点等ありましたら、アドバイスをお願いします。
よろしくお願いします。
投票数:0 平均点:0.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2009-6-1 17:36
ISHIJIMA  長老 居住地: 静岡県  投稿数: 1827
たくさんのタスクをコールしているのであれば各個々のタスクの設定は一緒になっていますか?
投票数:0 平均点:0.00
depth:
2
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2009-6-1 18:15
AlphaHoshino  常連   投稿数: 51
ISHIJIMA様

タスクの設定は全て同じにしています。
例えばデータのところは、
・トランザクション
モード⇒物理、開始⇒なし
・管理
ロック方式⇒なし
エラー発生時⇒アボート
で統一しています。

ちなみに、タスクによって設定が違うとデッドロックが起こる可能性があるのでしょうか?
(すみません、初心者な者で。。。)
投票数:0 平均点:0.00
depth:
3
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2009-6-1 18:45
ISHIJIMA  長老 居住地: 静岡県  投稿数: 1827
SQLの場合トランザクションは必ず発生すると思うのですが・・
ワークファイルはSQLですか?
投票数:0 平均点:0.00
depth:
4
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2009-6-1 18:54
AlphaHoshino  常連   投稿数: 51
ISHIJIMA様

はい。データベースは全てSQLとなっており、ワークもSQLです。
トランザクションの開始⇒なし、ロック⇒なしでも特にエラーとならなかったのでそのままにしたのですが、トランザクションをかけないからデッドロックになってしまうのでしょうか?

トランやサマリ更新時はトランザクションをかけているのですが、印刷や照会時に使用するワークを作成する際はかけていません(管理表のような設定にしています)
ISHIJIMAさんはワーク作成時にもかけているのでしょうか?
その際、どのような設定にしているのかもしよければ教えて下さい。
投票数:0 平均点:0.00
depth:
5
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2009-6-1 20:14
ISHIJIMA  長老 居住地: 静岡県  投稿数: 1827
私の場合はワークはメモリで行います。(PVSQLの時もありました)
SQLのワークは使用したことがありません。
印刷や照会時のトランザクションはタスク前処理の前かレコードロック時で行っています。(これでよいかはわかりませんが・・・)
あと関係ないかもしれませんがSQLの場合DBMSの特性で分離レベルは1のREAD COMMITTEDで設定しています。(なぜと聞かれるとどこかにこのように設定するように書かれていたような・・・)
投票数:0 平均点:0.00
depth:
6
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2009-6-2 9:45
AlphaHoshino  常連   投稿数: 51
ISHIJIMA様

遅くなり申し訳ありません。
データベースでメモリは選択したことがありませんでした。
トランザクションも特に気にしていなかったので、
データベースとトランザクションの所を社内で相談しながら試してみたいと思います。
それと分離レベルですが、確認したところ「0」となっていました。
ただ以前「1」にしたところ、フリーズのような状態になってしまい「0」にしたような覚えがあります。
(複数台で稼働するので、1台が処理中にほかの端末が待ち状態になって欲しくない。
もちろんトランやサマリ更新時は待ち状態になるのはOK)
投票数:0 平均点:0.00
depth:
7
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2009-6-2 10:12
ISHIJIMA  長老 居住地: 静岡県  投稿数: 1827
分離レベルですがMAGICのスキルアップセンターのMagic eDeveloper V10 チュートリアルSQL編のPDFの中に詳しく書かれています。
投票数:0 平均点:0.00
depth:
8
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2009-6-2 10:28
pu_mahalo  長老 居住地: 大阪  投稿数: 775
こんにちは Puです

Management Studioでデットロックプロセスを見つけたり
どの命令でロックされているか
Profiler等でMagicから出されてる命令を見たり

SQLserverには便利な機能が沢山ありますので
使用して調査されるのは いかがでしょうか

参照でも 故意的にロックかける場合もありますが
トラン無でもOKですよ
投票数:0 平均点:0.00
depth:
9
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2009-6-2 14:06
AlphaHoshino  常連   投稿数: 51
ISHIJIMA様、Pu様

アドバイスありがとうございます。
チュートリアルやプロファイラを確認してみました。
社内で実行すると最初に、
「set transaction isolation level read uncommitted」
と表示されるのですが、SQL文実行の前に、
「set implicit_transactions off」
と表示されていました。
これだと、トランザクションをかけずにワークを作成しているように見えるのですが、
じゃ何でデッドロックになるのかと疑問に感じています。

現地でプロファイラなどを使いどこで発生しているか調べるべきだとは思うのですが、
ただいつも出ている訳ではないので、ずっと見ている訳にもいきません。
プロセスの内容などは記録し後で確認する事ができたりするのでしょうか?
投票数:0 平均点:0.00
depth:
10
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2009-6-3 9:12
pu_mahalo  長老 居住地: 大阪  投稿数: 775
こんにちは  Puです
SQL Profiler でファイルに保存するを選び
トレースの有効時間を設定しておけば
その有効期間までトレースする事が可能です

以下 msのマニュアルより引用
===============================================
●デッドロックの原因の特定

TSQL イベント クラスと Stored Procedure イベント クラス (RPC:Starting と SQL:BatchStarting) および Locks イベント クラス (Lock:Deadlock と Lock:Deadlock Chain) に関係するイベントをキャプチャするトレースを作成できます。トレースにすべてのデータ列を含め、Event Class でグループ化します。一度に 1 つのデータベースだけを監視する場合、イベント基準 Database ID の値を指定します。

デッドロックに関係する接続を表示するには、次のいずれかを実行します。

* キャプチャしたデータを含むトレースを開き、ClientProcessID でデータをグループ化し、デッドロックに関係する両方の接続を展開表示します。

* キャプチャしたデータをトレース ファイルに保存し、トレース ファイルを 2 回開いて、2 つの SQL プロファイラ ウィンドウに個別に表示されるようにします。キャプチャしたデータを ClientProcessID でグループ化し、デッドロックに関係するクライアント プロセス ID を展開表示します。デッドロックになっている各接続はそれぞれ個別のウィンドウに表示されます。ウィンドウを並べて表示して、デッドロックの原因となっているイベントを確認します。
=========================================================
参考になれば
投票数:0 平均点:0.00
depth:
11
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2009-6-10 16:46
AlphaHoshino  常連   投稿数: 51
Pu様
返事が大変遅くなり申し訳ありません。

さっそく客先にて試してみたいと思います。
投稿以来エラーは出ていないようなのですが、
また出た際に少しでも原因が分かればと思っています。
ありがとうございました。
投票数:0 平均点:0.00

  条件検索へ


Copyright (C) Magic Software Japan K.K. All Rights Reserved.
個人情報保護方針 会員規約