記事一覧

ランキング登録しています
ご迷惑じゃなければボタンを押してくださいm(_ _)m
にほんブログ村 アウトドアブログ 登山へ
にほんブログ村 人気ブログランキングへ

メモ帳 Sqlserver2000 デッドロック確認方法と出し方

SQLServer2000の場合


トレース フラグ機能がいくつかあり、起動する事によって
障害の確認取れる場合がある。

今回はデッドロックについて。
いつもこれで悩まされる・・・


今回使うトレース フラグ
1204
デッドロックに関係しているロックのリソースと種類、
および影響を受けている現在のコマンドを返します。

3605
その情報が SQL Server エラー ログに書き込まれます。

1205
サンプルには入れておきますが、
別に入れなくても大丈夫程度のもの。




ログ開始コマンド
==============================

dbcc traceon (1204,1205, 3605, -1)
go
dbcc tracestatus(-1)
go

==============================


上記コマンドにて、
それぞれのトレースフラグがONになりました。
これ以降はログが出ます。


■デッドロック強制テスト

2つのクエリ画面立ち上げた後に、
①⇒②⇒③⇒④のタイミングで投げつけます。


Table名:AAA_HEAD
キー:Id
A

begin transaction;
select * from AAA_HEAD with(rowlock,updlock) where Id='1';

select * from AAA_HEAD with(rowlock,updlock) where Id='2';


B

begin transaction;
select * from AAA_HEAD with(rowlock,updlock) where Id='2';

select * from AAA_HEAD with(rowlock,updlock) where Id='1';


デットロックエラーが発生するはずです。
後はLogを入手し停止させます。


ログ停止コマンド
==============================

DBCC TRACEOFF (1204,1205,3205, -1);
GO
dbcc tracestatus(-1)
go

==============================


ログを出すのは問題ないですが、
ログの容量はかなり増えます・・・
使用しない場合はさっさと止めた方が良いです。







スポンサーサイト

コメント

コメントの投稿

非公開コメント

プロフィール

のん

Author:のん
嫁と結婚して4年半・・・
女?? 嫁以外興味なし♪
嫁大好きっす!!!!!!!

その他登山も開始。
登山初めて約2年。
まだまだ初心者ではありますが、
宜しくお願いします♪

リンク、ブロとも大募集です。
こちらも揃って宜しくお願いします★

マイプロテインの紹介コードになります。
VKLZ-R1
これを使えば購入時に割引が利きますので
もし良ければ使って下さい^^

最新トラックバック

カテゴリ

C# (5)

訪問者数