[HOWTO] データベース バックアップまたはトランザクション ログ バックアップからテーブルまたは行を取得する方法

文書翻訳 文書翻訳
文書番号: 321836 - 対象製品
この記事は、以前は次の ID で公開されていました: JP321836
すべて展開する | すべて折りたたむ

目次

概要

この資料では、元のデータベースを完全に復元しないで、データベース バックアップおよびトランザクション ログ バックアップから特定のテーブルまたは行を取得する方法について説明します。この方法は、他のユーザーが誤ってテーブルや行を削除した場合、または以前に存在していた特定のデータを取得する場合に役立ちます。

この資料の手順が正常に機能するには、一連のデータベース バックアップおよびトランザクション ログ バックアップが必要です。
  • トランザクション ログ バックアップを保持しておらず、データベース全体のバックアップのみを保持している場合は、データベース全体のバックアップを最後に行った時点に存在していたデータのみを取得できます。
  • データベース全体のバックアップを行ったことがない場合は、以前のデータは取得できません。
重要 : データベースの現在状態とは一貫性のないデータを取得するので、参照整合性が維持されないことがあります。取得したデータを元のデータベースにコピーして戻そうとすると、制約エラーやキーのエラーが発生する場合があります。その場合、適切な手順を実行して、参照整合性の問題に対処する必要があります。

現在のトランザクション ログのバックアップ

NO_TRUNCATE オプションを指定して、現在のトランザクション ログをバックアップします。詳細については、SQL Server Books Online の「BACKUP」を参照してください。

部分的なデータベース バックアップまたはデータベース全体のバックアップの復元

  • SQL Server 2000 : バックアップの計画にファイル グループのバックアップを含めている場合は、部分的なデータベースの復元を実行して別の場所に復元し、取得するテーブルを含むデータベースの一部のみを復元できます。この方法の詳細については、SQL Server Books Online の「データベースの部分的な復元操作」を参照し、その後この資料の「STOPAT オプションを使用したトランザクション ログ バックアップの復元」を参照してください。

    : バックアップ計画にファイル グループのバックアップを含めていないか、または SQL Server 7.0 を実行している場合は、次の手順に進みます。
  • ファイル グループのバックアップを保持していないか、または SQL Server 7.0 を実行している場合、データベース全体のバックアップ (および適用可能な場合は差分バックアップ) から使用するデータベースを別のデータベース名で復元します。この際、データベースは復旧しません。この操作により、データベースのコピーが作成されます。作成されたデータベースのコピーは、バックアップ作成時のデータを含み、データベースはトランザクション ログのバックアップの復元を行える状態にあります。このコピーは、同じサーバー上または別のサーバー上に復元できます。
  • 別の名前で別の場所にデータベースを復元する方法の詳細については、以下の関連情報を参照してください。
    SQL Server Books Online
    「RESTORE」
    「ファイルを新しい場所に復元する方法 (Transact-SQL)」
    関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
    221465 INF: RESTORE ステートメントでの WITH MOVE オプションの使用

STOPAT オプションを使用したトランザクション ログ バックアップの復元

部分的なデータベースの復元またはデータベース全体の復元を行った後にトランザクション ログのバックアップを復元し、テーブルまたは行が削除されたときより以前の特定の時点で復元を停止します。RESTORE LOG コマンドの STOPAT オプションを使用してトランザクション ログの復元を停止し、テーブルが削除されたときより以前の状態にデータベースを復旧します。

: データが削除された期間を選択して、その期間をスキップするオプションはありません。復旧できるのは、データが削除される以前の時点までです。データが削除された以後の時点の状態には復旧できません。

特定の時点までの復元方法の詳細については、以下の関連情報を参照してください。
SQL Server Books Online
「RESTORE」
「特定の時点まで復元する方法 (Transact-SQL)」

データの取得

データベースを復元後、INSERT、BCP (一括コピー ユーティリティ)、または SELECT INTO のいずれかを使用して、テーブルまたは行を元のデータベースにコピーできます (この資料では、INSERT、BCP、および SELECT INTO について説明しています。DTS も使用できますが、この資料では DTS の使用はお勧めしません)。

INSERT

行のサブセットまたは小さなテーブルだけを取得する場合は INSERT を使用します。INSERT は、元のデータベースに行を挿入するときに最も多くのトランザクション ログ領域を必要とします。元のテーブルに多くのインデックスが含まれている場合、INSERT ステートメントのログの記録が増加します。挿入を実行する前にインデックスを削除し、後でインデックスを再作成することをお勧めします。

BCP

テーブル全体を取得する必要があり、テーブルのサイズが大きい場合、BCP ユーティリティの使用を検討します。
  1. まだテーブルが存在しておらず、テーブル作成用のスクリプトがない場合にはスクリプトを生成し、その後テーブルを再作成します。
  2. BCP ユーティリティを使用して、復元したデータベースからテーブルのデータ (行) をテキスト ファイルにコピーし、テキスト ファイルから元のデータベースにデータをコピーします。BCP ユーティリティの使用方法に関する詳細については、SQL Server Books Online の「bcp ユーティリティ」を参照してください。

    : "最小限のログ記録" または "ログに記録しない" 一括コピーを実行する場合、BCP 完了後に元のデータベースでデータベース全体のバックアップを実行します。詳細については、SQL Server 2000 Books Online の「ログに記録する一括コピー操作と最小限でログに記録する一括コピー操作」および SQL Server 7.0 Books Online の「ログに記録する一括コピー操作とログに記録しない一括コピー操作」を参照してください。

SELECT INTO

テーブルが削除された場合、SELECT INTO を使用して、復元したデータベースからテーブルを選択して元のデータベースにデータをコピーできます。この方法では、最初にテーブルを作成する必要はありません。SELECT INTO はテーブルを作成して、テーブルのデータをコピーします。

  • SQL Server 7.0 : パーマネント テーブルに対して SELECT INTO を実行するには、元のデータベースで select into/bulkcopy オプションが有効になっている必要があります。また、SELECT INTO 完了後に、データベース全体のバックアップを実行する必要があります。SELECT INTO の詳細については、SQL Server Books Online の「SELECT (T-SQL)」を参照し、「INTO 句」の項を参照してください。
  • SQL Server 2000 : SQL Server 2000 の場合、パーマネント テーブルに対して SELECT INTO を実行する際に、select into/bulkcopy オプションは使用しません。ログ記録の量および SELECT INTO の実行後に元のデータベースでデータベース全体のバックアップを実行する必要があるかどうかは、元のデータベースの復旧モデルによって異なります。詳細については、SQL Server 2000 Books Online の「SELECT 句」の「INTO 句」と「復旧モデル」の各項を参照してください。
: データベースの現在状態とは一貫性のないデータを取得するので、参照整合性が維持されないことがあります。取得したデータをデータベースに挿入して戻そうとすると、制約エラーやキーのエラーが発生する場合があります。その場合、適切な手順を実行して、参照整合性の問題に対処する必要があります。


インデックス、トリガ、および制約の再作成

元のテーブルが失われた場合、すべてのインデックス、フルテキスト インデックス、トリガ、および制約を再作成する必要があります。

重要 : 現在のデータベースとは異なる特定の時点のデータベースからデータを取得するので、データベースの参照整合性が維持されないことがあります。この場合適切な手順を使用して、参照整合性の問題を解決します。

DBCC CHECKTABLE

新しいテーブルで Transact-SQL リファレンスの DBCC CHECKTABLE を実行してデータの整合性を調べます。詳細については、SQL Server Books Online の「DBCC CHECKTABLE」を参照してください。

関連情報

SQL Server Books Online
  • バックアップと復元の計画の立案
  • データベースのバックアップと復元
  • バックアップ/復元アーキテクチャ
関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
307775 [INF] Microsoft SQL Server の障害復旧に関する資料
281122 [INF] SQL Server でファイルとファイル グループのバックアップを復元する

プロパティ

文書番号: 321836 - 最終更新日: 2011年5月11日 - リビジョン: 4.0
この資料は以下の製品について記述したものです。
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 64-bit Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Workgroup Edition
キーワード:?
kbsqlmanagementtools kbhowtomaster KB321836
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com