現在オフラインです。再接続するためにインターネットの接続を待っています

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

この記事は、以前は次の 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 - 最終更新日: 05/11/2011 16:33:00 - リビジョン: 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
フィードバック