KNOWLEDGE

コーソルの技術情報

コーソルでは経験豊かなエンジニアが、Oracle Databaseに関するお役立ち情報を発信しています。
データベースのチューニングや設定にお役立ていただけます。

【SQL Server版】Log Reader機能による既にコミットしてしまった処理をロールバックする手順

■概要
 Toadでは、Log Reader機能でトランザクションログから過去実行したDML/DDL文と実行したDML/DDL文に対するロールバック用SQLを確認することができます。
 Log Reader機能を使うと、オペレーションミス等で削除/更新/追加してしまったデータをトランザクションログのデータを用いて実行前の状態に戻すことが可能です。
 このTipsでは例として削除してしまったデータを復元する手順を記載します。

■利用可能エディション
 Toad for SQL Server Professional Edtion
 Toad for SQL Server Xpert Edition
 Toad for SQL Server Developer Editoin

■事前準備
 Log Readerの機能を使用するためには初回実行前に以下の作業が必要です(2回目以降は不要です)。
  1. SQL Server ルートディレクトリを確認します。
     (SQL Server Management Studio でサーバーのプロパティから確認できます) 
  2. 以下フォルダの xp_LogReader.dll をコピーします。 
   C:\Program Files\Quest Software\Toad for SQL Server\Plugins\SqlServer\LogReader   
  ※SQL Server が 64 bitの場合は、xp_LogReader_x64.dll をコピーします
  3. SQL Server ルート\Binn フォルダにペーストします。ファイル名は xp_LogReader.dll にしてください。
  4. SQL Server の master データベースで以下コマンドを実行します。
  EXEC sp_addextendedproc ‘xp_qlr_version’, ‘xp_LogReader.dll’
   EXEC sp_addextendedproc ‘xp_qlr_logfile’, ‘xp_LogReader.dll’
   EXEC sp_addextendedproc ‘xp_qlr_loginfo’, ‘xp_LogReader.dll’
   EXEC sp_addextendedproc ‘xp_qlr_logread’, ‘xp_LogReader.dll’ 
 5. 以下コマンドでバージョン番号が返ってくれば正しくインストールされています。
   EXEC master..xp_qlr_version

■データ生成手順
 1) デスクトップ上の『Toad for SQL Server』アイコンをダブルクリックしToad for SQL Serverを起動する。

図1:Toad for SQL Serverアイコン

 2) DBへの接続画面が表示されたら、DB接続に必要な情報を入力して『Connect』をクリックすると、
   Toad for SQL Serverトップ画面が表示される。
    必要な情報
     - Server name
     - Authentication
     - Database

図2:DB接続情報入力画面
図3:Toad for SQL Serverトップ画面

 3) Toadトップ画面が表示されたら、メニューから[Tools] – [Administer] – [Log Reader]をクリックする。

図4:Log Reader起動

 4) Welcome to the Read Log Wizard画面 が表示されたら、『Next』をクリックする。

図5:Welcome to the Read Log Wizard画面

 5) Log type画面が表示されたら、読み込むトランザクションログを選択し、『Next』をクリックする。
   ここでは、テーブルのDROPが直近行われた処理であり、オンライントランザクションログに格納されているため、
   『Online Transaction Log』を選択する。

図6:Log type画面

 6) Select database画面が表示されたら、DB接続に必要な情報を入力して『Next』をクリックする。
    必要な情報
     - SQL Server
     - Authentication
     - Database

図7:Select database画面

 7) Select backup files画面にて、トランザクションログのバックアップファイルを追加することができる。
   ここでは、オンライントランザクションログのみでテーブルの復元可能な情報は揃っているため、
  そのまま『Next』をクリックする。

図8:Select backup files画面

 8) Completing the Read Log Wizard画面にて、トランザクションログの読み込み結果が表示される。
   内容を確認して、『Finish』をクリックする。

図9: Completing the Read Log Wizard画面

 9) トランザクションログから過去に実行されたDML/DDLの情報が表示される。
   対象のDELETE文を選択(①)すると、タブの下部で実行されたSQL(②)が確認できる。

図10: Log Readerタブ

 10) Log Readerタブの上部に表示される『Undo/Redo Wizard』ボタンをクリックする。

 11) Welcome to the Undo/Redo Wizard画面にて、 『Next』をクリックする。

図12: Welcome to the Undo/Redo Wizard画面

 12) Select direction画面にて、 “I would like to undo the selected operation” (①)を選択し、『Next』(②)をクリックする。

図13:Select direction画面

 13) Script verification画面にて、『Next』をクリックする。

図14:Script verification画面

 14) Run script画面にて、”Run immediately”(①)を選択し、『Next』(②)をクリックする。

図15:Run script画面

 15) Completing the Undo/Redo Wizard画面にて、エラーがないことを確認し、『Finish』をクリックする。

図16:Completing the Undo/Redo Wizard画面

 16) Log Readerタブにて、新たにINSERT文(①)が実行されたことが確認できる。
   追加されたINSERT文を選択するとタブの下方で実際に実行されたSQL文(②)が確認できる。

図17:実行された処理の確認

 17) 対象のテーブルのデータを見てみるとINSERT文が実行されて、DELETEが実行される前の状態に戻っていることが確認できる。

図18:テーブルのデータ確認

Log Readerによるテーブルデータをトランザクションが実行される前の状態に戻す手順は以上です。

以下のTipsもあわせてご活用ください。
 - SQL Server Management Studio(SSMS)とToadの連携
 - SQLを自動チューニングできるSQL Optimizer 利用手順
 - Spotlight on SQL ServerでT-SQLを監視する方法

Toadは30日間、フル機能で無償トライアルも可能です。
Toadに少しでも興味を持っていただけたなら、是非次のページもご参照ください。
 ・トライアルのご依頼はこちら
 ・Spotligh概要ページはこちら
 ・Spotlight on Oracle機能紹介ページはこちら
 ・Spotlight on SQL Server機能紹介ページはこちら
 ・Toad概要ページはこちら
 ・Toad for Oracle機能紹介ページはこちら
 ・Toad for SQL Server機能紹介ページはこちら
 ・Toadの製品紹介資料ダウンロードはこちら