Loading...

We've detected that your browser language is Chinese. Would you like to visit our Chinese website? [ Dismiss ]
By: Dervish

SQL Serverの日常運用において、多くの管理者が直面する課題があります。高リスクなUPDATEまたはDELETE文を実行する際、安全策を用意する必要がある場面です。単一の小さなテーブルを保護するためだけに500GBの本番データベース全体をバックアップするのは、時間がかかる上にストレージリソースの無駄遣いになります。

ここで役立つのが、SQL Serverにおける効率的なテーブル単位バックアップの手法です。SQL Serverには標準でBACKUP TABLEコマンドは搭載されていませんが、データのスナップショットを作成する複数の実用的な代替手段が存在します。本ガイドではT-SQL、SSMSツール、BCP出力、SQL Serverインポート/エクスポートウィザードといった、データ付きテーブルバックアップの各手法を解説します。また、テーブル単位バックアップの制限点や、企業が真のデータ耐性を確保するためにデータベース全体の保護を必要とする理由についても紹介します。

SQL Serverテーブルのバックアップ方法

データベース全体ではなく単一テーブルをバックアップする理由

本番環境の標準的な安全対策として、データベース完全バックアップ(.bak)を実行する運用が定着しています。しかしSQL ServerのDBAや開発者は、大容量の完全バックアップが過剰なケースに頻繁に遭遇します。特定のテーブルだけを対象にバックアップする方が適切な理由は以下の通りです。

  • 開発作業の迅速性:特定テーブルに対し複雑なデータ移行や一括UPDATEを実施する前に、数分ではなく数秒で作成可能な安全な復旧ポイントが必要です。テーブル単位バックアップはこの瞬時の復旧ポイントを提供します。

  • リソース負荷の削減:10MBの設定テーブルを保護するためだけに1TBのデータベース全体をバックアップすると、CPU、I/O、ストレージを無駄に消費します。粒度の細かいテーブルバックアップにより環境の負荷を抑えられます。

  • 対象を絞ったデータ共有:ProductCatalogテーブルのみを外部開発者に渡したい場合、テーブル単位のスクリプトや出力ファイルを作成する方が、機密ユーザー情報を含むデータベース全体を渡すより効率的です。

  • ロックのリスク低減:完全バックアップは非ブロッキング設計ですが、ストレージサブシステムに継続的な負荷をかけます。高負荷システムでは単一テーブルの出力の方がシステムへの影響が少ない傾向にあります。

ただし重要な点として、テーブルバックアップは一時的なデータスナップショットであり、災害復旧ソリューションにはなりません。コーディング時の人為的ミスからはデータを守れますが、基盤となるデータベースファイルが破損した場合、データを保護することはできません。

SQL Serverテーブルの4種類のバックアップ手法

即時のスナップショット作成、またはデータ移行用の持ち運び可能なテーブルバックアップが必要な場合、以下の手法は小規模環境から企業規模まで対応可能です。

手法1. SELECT INTOによる瞬時スナップショット作成

UPDATEまたはDELETE文実行前に一時的なバックアップを作成する際、最も簡単な元に戻す手段となります。

手順1. SSMSを起動し、対象のSQL Serverインスタンスに接続します。

手順2. ツールバーの「新しいクエリ」ボタンをクリックします。

手順3. クエリウィンドウに下記のT-SQLコードを入力します。

— YourTableを元のテーブル名、YourTable_Backupを任意のバックアップテーブル名に置き換えてください
SELECT * INTO YourTable_Backup
FROM YourTable;

手順4. 「実行」をクリック(またはF5キーを押下)します。

手順5. 確認方法:左側のオブジェクトエクスプローラーで「テーブル」フォルダを右クリックし、「更新」を選択すると、作成したバックアップ用テーブルが表示されます。

オブジェクトエクスプローラーへの接続

手法2. スクリプト生成機能(データ付きテーブルバックアップ)

テーブルを別サーバーに移行したり、持ち運び可能なファイルとして保管したりする場合は、.sqlスクリプトを生成する方法が最適です。単一テーブルのバックアップ・復元に活用できます。

手順1. オブジェクトエクスプローラーにて、対象テーブルを含むデータベースを右クリックします。

手順2. タスクスクリプトの生成…を選択します。

手順3. ウィザード画面で次へをクリックし、「特定のデータベースオブジェクトを選択」を選び、バックアップ対象のテーブルにチェックを入れます。

手順4. 次へを押して「スクリプトオプションの設定」画面へ進み、「詳細設定」ボタンをクリックします。

手順5.重要手順:「スクリプト出力するデータの種類」オプションを探し、ドロップダウンメニューから「スキーマとデータ」を選択し、OKを押します。

手順6. 出力先を選択(スクリプトファイルとして保存、または新規クエリウィンドウで開く)し、次へを繰り返し、完了まで進めます。

SQL Server スクリプト生成画面

手法3. BCP(一括コピーツール)による大容量データ出力

数百万件のレコードを扱う場合、GUIによる出力やスクリプトでは処理が停滞する恐れがあります。BCPは高速なデータ移行向けのコマンドラインツールです。

手順1. Win + Rキーを押下し、cmdと入力しEnterキーを押してコマンドプロンプトを開きます。

手順2. 下記コマンドを入力し、自身の環境に合わせてパラメータを修正します。

bcp [データベース名].[スキーマ名].[テーブル名] out “D:\Backup\MyTableData.dat” -c -T -S [サーバーインスタンス名]

  • -c:文字型データで出力処理を実行

  • -T:信頼接続(Windows認証)を使用

  • -S:接続先のサーバーインスタンス名を指定

手順3. Enterキーを押下し、処理完了後、指定したパスに出力された.datファイルが生成されます。

大容量データ向けBCPツール

手法4. SQL Serverインポート/エクスポートウィザード

テーブルをExcelやフラットファイルなど外部フォーマットにバックアップしたい場合、最も直感的な手法です。

手順1. SSMSにて対象データベースを右クリックタスクデータのエクスポート…を選択します。

手順2. データソースを選択:既定値は現在接続中のSQL Serverとなるため、次へをクリックします。

手順3. 出力先を選択:ドロップダウンリストから出力形式を選びます。

  • 別のデータベースにバックアップする場合:「SQL Server Native Client」を選択

  • ファイルとして出力する場合:「Microsoft Excel」または「フラットファイル出力先」を選択

手順4. 「1つ以上のテーブルまたはビューからデータをコピー」を選択し、次へをクリックします。

手順5. バックアップ対象テーブルにチェックを入れ、次へを繰り返し、完了まで進めます。

SQL Serverインポートエクスポートウィザード画面

テーブル単位バックアップの限界:.bak完全バックアップが依然必要な理由

上記の手法は柔軟なテーブルバックアップを実現できますが、データベース完全バックアップ(.bak)の代替にはなりません。本番環境で手動のテーブルスナップショットのみに依存することは、主に2つの理由からリスクを伴います。

  1. 災害からの保護不可:データベースファイル(MDF)が破損、またはサーバーハードウェアに障害が発生した場合、同一データベース内に作成したバックアップテーブルは元のデータと共に消失します。

  2. 耐性の不足:手動スナップショットでは特定時点復元(PITR)に対応できません。SELECT INTOで作成したバックアップテーブルだけでは、データ破損が発生する直前の秒単位までデータを巻き戻すことは不可能です。

つまり、テーブル単位バックアップは運用補助ツールであり、完全自動化されたデータベースバックアップが災害時の保険となります。

i2BackupによるSQL Serverデータ保護の高度化

柔軟なテーブル単位バックアップと企業レベルの堅牢なデータ保護の両方を実現するため、現場の専門家はi2Backupを活用しています。Info2softのデータ保護スイートの中核製品であるi2Backupは、手動スクリプトによる運用を自動化されたデータ耐性基盤へとアップグレードします。

  • オブジェクト単位の細粒度復元:データベース全体をバックアップしている場合でも、数TB規模のDB全体を復元することなく単一テーブルのみ抽出・復元可能です。

  • 自動化されたバックアップ方針:手動コマンドに依存する必要がなく、完全バックアップ、差分バックアップ、トランザクションログバックアップを自動実行し、RPOを最小限に抑えます。

  • バイト単位のデータ整合性保証:高度なレプリケーション・バックアップ技術を活用し、システム高負荷時でも複雑なリレーショナルテーブルのデータ整合性と復元性を確保します。

60日間無料トライアル

SQL Serverテーブルバックアップに関するよくある質問

SQL Serverに標準の「BACKUP TABLE」コマンドは存在しますか?

いいえ。SQL ServerのBACKUPコマンドはデータベース、差分ファイル、トランザクションログのみ対応しています。テーブルのバックアップにはSELECT INTOやBCPといった代替手法を使用する必要があります。

SELECT INTOで作成したバックアップテーブルにはデータとインデックスが両方保存されますか?

いいえ。データと基礎的なスキーマのみコピーされます。このテーブルから復元する場合は、インデックスや制約を手動で再作成する必要があります。

元のテーブルを上書きせずに単一テーブルをバックアップ・復元する方法は?

復元時は常に別名のテーブル(例:Table_Recovered)へ復元し、データの正常性を確認後、sp_renameを使用してテーブル名を入れ替えます。

テーブルバックアップ作業を自動化する方法は?

SQL Serverエージェントを使用してBCPスクリプトを定期実行することは可能ですが、集中管理、暗号化、復元検証機能を備えたi2Backupのような専用ソリューションの導入が推奨されます。

まとめ

SQL Serverのテーブルバックアップ手法を習得することは、DBAや開発者に必須のスキルです。日常のデータ操作時に迅速な安全策を用意できます。ただし、プロフェッショナルな運用では手動スナップショットは一部の対策に過ぎないことを理解する必要があります。

テーブル単位スナップショットの利便性と、i2Backupによる堅牢な自動バックアップ機能を組み合わせることで、単なる「バックアップ済み」の状態ではなく、あらゆる規模のデータ損失に耐える真の耐性を備えたSQL Server環境を構築できます。

概要は準備中です

関連記事

目次:
最新情報を購読
最新のインサイト、ニュース、限定コンテンツをお届けします。いつでも配信解除が可能です。
購読する
ビジネスデータのセキュリティ強化を始めませんか?
60日間の無料トライアルまたはデモで、Info2softが企業データをどのように保護するかをご確認ください。
フォームにご記入の上、送信してください。担当者より追ってご連絡いたします。
このフォームを送信することにより、 プライバシー通知を読み、同意したことを確認します。
{{ isSubmitting ? '送信中...' : '送信する' }}