HOME

ロックの確認


  1. トランザクション開始
  2. 端末A からDatabase(lesson)にログイン後、直列化可能トランザクションをかけてtabale(Customers)にupdateを発行

  3. トランザクションデータをSELECT
  4. 端末BからDatabase(lesson)にログイン後、table(Customers)にselectを発行するも、応答なし

  5. トランザクションデータの確認
  6. Enterprise Manager でプロセスがロックされているのが確認できる

  7. 実行中のSQLの確認
  8. 最後に発行された Transact-SQL

  9. ロック状況
  10. ロック状況を確認

  11. ロックの状況に関する情報
  12. アイテム タイプ 説明
    ロックの種類 RID テーブル内の行を個別にロック
    KEY インデックス内の行ロックのキー
    直列化可能なトランザクションで、キーの範囲を保護するために使用
    PAG データまたはインデックスページ
    EXT 連続する8ページのデータページまたはインデックスページのグループ
    TAB すべてのデータとインデックスを含むテーブル全体
    DB データベース
    モード Shared(S) 読み取り専用操作に対して使用
    Update(U) 更新可能なリソースに大して使用
    複数のセッションでリソースの読み取りとロックを行った後、更新を行うときに発生する一般的なデッドロックを防止する
    Exclusive(X) データ変更操作に対して使用
    同時に同じリソースに対して複数の更新が行われないようにする
    Intent ロック階層を設定するために使用
    Schema テーブルのスキーマに依存する操作を実行するときに使用
    スキーマ安定性(Sch-S)とスキーマ修正(Sch-M)がある
    Bulk update(BU) データをテーブルに一括コピーするとき、TABLOCKヒントが指定されている場合に使用
    状態 GRANT ロックの取得
    WAIT ロックは別のプロセスによってブロックされている
    CNVT ロックは別のロックに変換されている
    所有者 Owner ロックの所有者
    Xact (トランザクション)
    Sess (セッション)
    Curs (カーソル) のいずれか
    インデックス Index リソースに関連付けられたインデックス
    クラスタ化されている場合はテーブル名
    リソース RID テーブル内でロックされている行の識別子
    fileid : page : rid の組み合わせで識別される
    KEY SQL Server が内部的に使用する 16進数
    PAG ページ番号
    fileid : page の組み合わせで識別される
    ここでの fileid は sysfiles テーブル内の fileid で、ページはそのファイル内での論理ページ番号
    EXT ロックされるエクステント内の開始ページ番号
    ページは fileid : page の組み合わせで識別
    TAB ObjId列にテーブルのオブジェクトIDがすでに格納されているので情報は提供されない
    DB dbid列にデータベースのデータベースIDがすでに格納されているので、情報は提供されない

  13. ロックの強制解除
    1. プロセス情報のコンテキストメニュー (メッセージの送信) 端末A にロックを強制解除すべくメッセージを送信する
    2. /p>

    3. メッセージの設定
    4. メッセージが送信された
    5. プロセス情報のコンテキストメニュー (強制終了) トランザクションを強制終了してしまう
    6. 端末B に 結果が返る (ロックが解除された)
    7. 端末 A側で rollback を発行すると エラー発生 (トランザクションを強制終了してしまったのでrollback できない)