バックアップ SQL Server 2025年に向けた完全なガイドを備えたデータベース。あらゆるスキルレベルに対応したステップバイステップの手順とベストプラクティスを解説します。
1. 概要 SQL Server バックアップ
1.1とは SQL Server バックアップ?
SQL Server バックアップとは、データ損失を防ぐためにデータベースファイルのコピーを作成するプロセスです。バックアップは特定の時点におけるデータベースの状態をキャプチャするため、ハードウェア障害、人為的ミス、災害が発生した場合でもデータを復元できます。
SQL Server デフォルトでは、テーブル、ストアド プロシージャ、ビュー、インデックス、トランザクション ログなどのすべてのデータベース オブジェクトを含む .bak ファイルにバックアップを保存します。
1.2理由 SQL Server バックアップは重要
データベースのバックアップは、データ損失に対する最後の防衛線として機能します。適切なバックアップがなければ、組織は次のようなリスクにさらされます。
- 永久的なデータ損失 ハードウェアの故障や破損による
- ダウンタイムの延長 回復の試み中
- ビジネスの中断 収益損失
- コンプライアンス違反 データが回復できない場合
- 風評被害 サービス中断から
レギュラー SQL Server バックアップにより、ビジネスの継続性が確保され、データ保護の規制要件が満たされます。
1.3 一般的なデータ損失のシナリオ
データ損失がいつ発生するかを理解することは、効果的なバックアップ戦略を立てるのに役立ちます。
- ハードウェア障害: ディスククラッシュ、サーバーの故障、ストレージシステムの障害
- 人為的エラー: 誤って削除したり、間違った更新を行ったり、テーブルを削除したりした場合
- ソフトウェアの問題: アプリケーションのバグ、破損したアップデート、またはシステムクラッシュ
- セキュリティ違反: ランサムウェア攻撃、悪意のある削除、または不正アクセス
- 自然災害: データセンターに影響を与える火災、洪水、停電
2 理解 SQL Server バックアップの種類
SQL Server 複数のバックアップ タイプをサポートし、それぞれが異なるリカバリ ニーズとストレージ要件に対応します。
2.1 フルバックアップ
完全バックアップでは、すべてのデータ ファイルと回復に必要なトランザクション ログの一部を含む、データベース全体の完全なコピーが作成されます。
2.1.1 フルバックアップを使用する場合
完全バックアップは次の場合に最適です。
- 他のバックアップタイプのベースラインを確立する
- バックアップ時間が許容できる小規模から中規模のデータベース
- 週次または月次バックアップスケジュール
- 変更頻度の低いデータベース
2.1.2 フルバックアップの利点と制限
Advantages:
- 最もシンプルな復元プロセス – 1つのファイルにすべてが含まれています
- 自己完結型で他のバックアップから独立
- 完全なデータベース復元のための最速の回復時間
制限事項:
- かなりの保管スペースが必要
- 大規模データベースのバックアップ時間が長くなる
- バックアップ操作中のリソース消費量の増加
2.2 差分バックアップ
差分バックアップでは、最後の完全バックアップ以降のデータの変更のみがキャプチャされるため、バックアップ時間とストレージ要件が削減されます。
2.2.1 差分バックアップの仕組み
差分バックアップは変更されたエクステントを使用して変更を追跡します。復元すると、 SQL Server 最初に最後のフルバックアップを適用し、次にmを適用しますost 最近の差分バックアップ。
2.2.2 完全バックアップと差分バックアップ
| 側面 | Full Backup | 差分バックアップ |
|---|---|---|
| サイズ | 完全なデータベース | 最後の完全バックアップ以降の変更のみ |
| バックアップ時間 | 最長 | フルより速い |
| 復元プロセス | 単一ファイルの復元 | フル+デファレンシャルが必要 |
| 必要なストレージ | Most スペース | 最初はスペースが少ないが、時間が経つにつれて増える |
2.3 トランザクションログのバックアップ
トランザクション ログ バックアップは、最後のログ バックアップ以降のすべてのトランザクションをキャプチャし、ポイントインタイム リカバリを可能にします。
2.3.1 トランザクションログについて
トランザクションログは、データベースへのすべての変更を記録します。ログバックアップは、ログの非アクティブな部分を切り捨てることで、ログが無制限に大きくなりディスクがいっぱいになるのを防ぎます。
2.3.2 ポイントインタイムリカバリ
トランザクションログバックアップを使用すると、ログバックアップ内の任意の時点にデータベースを復元できます。これは、誤ってデータを変更または削除した場合の復旧に不可欠です。
ポイントインタイムリカバリを実行するには、次のものが必要です。
- 最後のフルバックアップ
- Most 最近の差分バックアップ(オプション)
- フル/差分バックアップからのすべてのトランザクションログバックアップ tar時刻を取得
2.4 ログ末尾のバックアップ
ログ末尾バックアップは、まだバックアップされていないログレコードをキャプチャし、データの損失を防ぎ、ログチェーンを維持します。 SQL Server データベースを最新の時点に復元するには、トランザクションログの末尾をバックアップする必要があります。ログ末尾のバックアップは、データベースの復旧計画において対象となる最後のバックアップです。

メモ: すべての復元シナリオでログ末尾のバックアップが必要なわけではありません。復旧ポイントが以前のログバックアップに含まれている場合、ログ末尾のバックアップは必要ありません。また、データベースを移動または置換(上書き)し、データベースを復元後の時点に復元する必要がない場合にも、ログ末尾のバックアップは不要です。ost 最近のバックアップ。
2.4.1 ログ末尾のバックアップが必要な場合
次のシナリオは、ログ末尾のバックアップを実行する必要がある状況を示しています。
オンラインデータベースの復元: データベースがオンラインで、データベースの復元操作を実行する予定の場合は、まずログの末尾をバックアップしてください。オンラインデータベースのエラーを回避するには、バックアップ時にBACKUP Transact-SQL文のWITH NORECOVERYオプションを使用する必要があります。 SQL Server データベース。
オフライン データベース復旧: データベースがオフラインでsに失敗した場合tarデータベースを復元する必要がある場合は、まずログの末尾をバックアップします。この時点ではトランザクションは発生しないため、WITH NORECOVERYオプションの使用は任意です。このシナリオでは、NORECOVERYは実質的にコピーのみのトランザクションログバックアップと同じです。
破損したデータベースのバックアップ: データベースが破損している場合は、BACKUP文のWITH CONTINUE_AFTER_ERRORオプションを使用して、ログ末尾のバックアップを作成してみてください。破損したデータベースでは、ログファイルが破損しておらず、データベースがログ末尾のバックアップをサポートする状態にあり、データベースに一括ログ記録された変更が含まれていない場合にのみ、ログ末尾のバックアップが成功します。ログ末尾のバックアップを作成できない場合、最新のMS SQL Server バックアップデータベースはlost.
2.4.2 ログ末尾バックアップの主要オプション
回復なし: オンラインデータベースのログの末尾をバックアップし、後で復元する予定の場合は、WITH NORECOVERYを使用します。NORECOVERYはデータベースをオフラインにします。また、 SQL Server オフラインデータベースの末尾ログ。データベースをオフラインのままにしたい場合は、WITH NORECOVERY を使用してください。COPY_ONLY または NO_TRUNCATE オプションのいずれかを指定しない限り、ログは切り捨てられることに注意してください。
CONTINUE_AFTER_ERROR の場合: CONTINUE_AFTER_ERROR は、破損したデータベースの末尾をバックアップする場合にのみ使用してください。破損したデータベースのログの末尾をバックアップする場合、通常はログバックアップで取得されるメタデータの一部が利用できない可能性があります。
2.5 コピーのみのバックアップ
コピーのみのバックアップは、通常のバックアップシーケンスに影響を与えることなく、独立したバックアップを作成します。差分バックアップチェーンやトランザクションログの連続性を損なうことはありません。
コピーのみのバックアップは次の場合に使用します。
- テストまたは開発データベースのコピーの作成
- スケジュールされたバックアップに影響を与えないアドホックバックアップ
- 大きな変更やテストの前にバックアップを取る
2.6 ファイルとファイルグループのバックアップ
ファイルとファイルグループのバックアップ tarデータベース全体ではなく、特定のデータベースファイルまたはファイルグループを取得します。この方法は、すべてのバックアップに時間がかかりすぎるような大規模なデータベースに適しています。
主なメリット:
- 大規模データベースのバックアップ操作の高速化
- 複数のファイルグループの並列バックアップ
- きめ細かな回復オプション
- 読み取り専用ファイルグループの最適化されたバックアップスケジュール
2.7 部分バックアップ
部分バックアップには、プライマリファイルグループと読み取り/書き込みファイルグループ(読み取り専用ファイルグループを除く)のすべてのデータが含まれます。これにより、読み取り専用ファイルグループに静的な履歴データが格納されているデータベースのバックアップサイズと時間が削減されます。
3. SQL Server 復旧モデル
SQL Server 復旧モデルによって、使用可能なバックアップの種類とトランザクション ログの管理方法が決まります。
3.1 シンプルリカバリモデル
3.1.1 特徴とユースケース
シンプル リカバリでは、各チェックポイントの後にトランザクション ログが自動的に切り捨てられ、ログ バックアップを必要とせずに領域が再利用されます。
最適な用途:
- 開発およびテストデータベース
- バックアップ間のデータ損失が許容されるデータベース
- 再実行可能なETLプロセスを備えたデータウェアハウス
- 読み取り専用またはレポートデータベース
3.1.2 利用可能なバックアップオプション
シンプルなリカバリは以下をサポートします:
- 完全バックアップ
- 差分バックアップ
- ファイルとファイルグループのバックアップ
- コピーのみのバックアップ
トランザクションログのバックアップは 利用できない 単純復旧モデルの場合。
3.2 完全復旧モデル
3.2.1機能と利点
完全リカバリでは、すべてのトランザクションがログに記録され、バックアップされるまでログレコードが保持されます。これにより、トランザクションログバックアップ内の任意の時点への完全なデータリカバリが可能になります。
主なメリット:
- データ損失の可能性は最小限
- ポイントインタイムリストア機能
- ログ配布とデータベースミラーリングをサポート
- 最大限の回復柔軟性
3.2.2 トランザクションログ管理
完全リカバリでは、次の目的で定期的にトランザクション ログ バックアップを実行する必要があります。
- トランザクションログがディスク領域を占有するのを防ぐ
- 継続的なバックアップチェーンを維持する
- ポイントインタイムリカバリを有効にする
- ログファイルの増大を制御する
一般的なバックアップ スケジュール: 完全バックアップは毎週、差分バックアップは毎日、ログ バックアップは 15 ~ 30 分ごとに実行します。
3.3 一括ログ復旧モデル
3.3.1 一括ログを使用する場合
一括ログ リカバリでは、通常のトランザクションの完全なログ記録を維持しながら、BULK INSERT、SELECT INTO、インデックス再構築などの一括操作を最小限にログに記録します。
次の場合には一括ログ回復を使用します。
- 大規模な一括インポート操作の実行
- 大きなテーブルのインデックスの再構築
- 最小限のログ記録のメリットを享受できる操作の実行
- 特定の操作中にトランザクションログのサイズを縮小する必要がある
3.3.2 制限と考慮事項
重要な制限事項:
- 一括操作中はポイントインタイム復元は利用できません
- 一括操作が発生するとログバックアップのサイズが大きくなります
- 必要に応じてフルログと一括ログを切り替える必要があります
3.4 適切な復旧モデルの選択
ビジネス要件に基づいて復旧モデルを選択します。
| 復旧モデル | データ損失リスク | ポイントインタイムリカバリ | 以下のためにベスト |
|---|---|---|---|
| 簡単な拡張で | 前回のバックアップ以降の変更 | いいえ | 開発/テスト、許容可能なデータ損失 |
| フル | 最小限(通常は数分) | あり | 実稼働データベース、重要なデータ |
| 一括ログ | 最後のログバックアップ以降の変更 | 一括操作中は制限あり | テンポrar一括操作中に使用 |
4。 バックアップ SQL Server SSMSを使用したデータベース
4.1 前提条件と準備
バックアップする前に SQL Server データベースでは、次のことを確認してください。
- 適切な権限(db_owner または BACKUP DATABASE 権限)を持っている
- バックアップファイル用の十分なディスク容量
- SQL Server Management Studio (SSMS) がインストールされている
- ネットワークの場所にバックアップする場合にアクセス可能なネットワーク パス
4.2 ステップバイステップ: SSMS を使用した完全バックアップ
以下の手順に従って、完全なバックアップを作成してください。 SQL Server SSMS を使用したデータベース。
4.2.1 オープニング SQL Server 管理スタジオ
- 起動する SQL Server 管理スタジオ
- サーバー名を入力してください サーバーの名前 フィールド
- 認証方法を選択してください
- 詳しくはこちら つながり、
4.2.2 データベースとバックアップオプションの選択
- In オブジェクトエクスプローラー、 データベース
- バックアップしたいデータベースを右クリックします
- 選択する タスク -> バックアップ
- データベースのバックアップ ウィンドウでデータベース名を確認します
- 選択する フル として バックアップの種類
4.2.3 バックアップ先の設定
- 開催場所、クリック 削除します デフォルトのパスをクリアする(必要な場合)
- 詳しくはこちら 追加 新しいバックアップ場所を指定する
- ファイルのパスと名前を入力します .BAK
- 詳しくはこちら OK 目的地を確認する
4.2.4 Advanced Backup 設定
- 詳しくはこちら メディア オプション 左のパネル
- バックアップ オプションを選択します。
- 既存のバックアップセットをすべて上書きする – 既存のバックアップを置き換える
- 既存のバックアップセットに追加 – 既存のバックアップファイルに追加
- 詳しくはこちら バックアップオプション 左のパネル
- オプション設定を構成します。
- バックアップを圧縮する – バックアップファイルのサイズを縮小
- バックアップを暗号化する – 機密データを保護
- 完了したらバックアップを検証する – バックアップの整合性をチェックする
4.2.5 バックアップの実行
- すべての設定を確認する データベースのバックアップ ウィンドウを使用して入力ファイルを追加します。
- 詳しくはこちら OK その後、Ptarバックアッププロセス
- バックアップが完了するまで待ちます
- バックアップが完了すると成功メッセージが表示されます
- 詳しくはこちら OK 確認ダイアログを閉じる
4.3 SSMS による差分バックアップの作成
差分バックアップを作成するには、完全バックアップと同じ手順に従いますが、 差動プローブ 手順4.2.2でバックアップの種類として「差分バックアップ」を選択してください。差分バックアップには、ベースラインとして事前の完全バックアップが必要であることに注意してください。
4.4 SSMS によるトランザクション ログ バックアップの作成
トランザクション ログ バックアップは、完全復旧モデルまたは一括ログ復旧モデルを使用しているデータベースでのみ使用できます。
- データベースを右クリックし、 オブジェクトエクスプローラー
- 選択する タスク -> バックアップ
- 選択する トランザクションログ バックアップタイプとして
- 必要に応じて宛先とオプションを設定します
- 詳しくはこちら OK ログバックアップを作成する
4.5 SSMS でコピーのみのバックアップを作成する
コピーのみのバックアップは、通常のバックアップ シーケンスに干渉しません。
- 完全バックアップを作成する手順に従います
- バックアップオプション ページ
- チェック コピーのみのバックアップ オプション
- バックアッププロセスを通常通り完了します
5。 バックアップ SQL Server T-SQLを使用したデータベース
5.1 基本的なBACKUP DATABASE構文
T-SQL BACKUP DATABASEコマンドは、プログラムによる制御を提供します。 SQL Server バックアップ。
BACKUP DATABASE database_name
TO DISK = 'backup_file_path'
WITH options;
5.2 完全バックアップ T-SQL コマンド
5.2.1 シンプルなフルバックアップスクリプト
最小限のオプションで基本的な完全バックアップを作成します。
BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks.bak'
GO
5.2.2 オプション付きフルバックアップ
説明情報と書式設定オプションを追加します。
BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks.bak'
WITH FORMAT,
INIT,
NAME = 'AdventureWorks-Full Database Backup',
DESCRIPTION = 'Full backup of AdventureWorks database',
STATS = 10
GO
オプションの説明:
- FORMAT – 新しいバックアップセットを作成します
- INIT – 既存のバックアップファイルを上書きします
- NAME – バックアップセット名を割り当てます
- DESCRIPTION – 説明文を追加する
- STATS – 10%ごとに進捗状況を表示します
5.3 差分バックアップ T-SQL コマンド
差分バックアップでは DIFFERENTIAL オプションを使用します。
BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks_Diff.bak'
WITH DIFFERENTIAL,
INIT,
NAME = 'AdventureWorks-Differential Backup',
STATS = 10
GO
5.4 トランザクションログバックアップ T-SQL コマンド
トランザクション ログのバックアップには BACKUP LOG を使用します。
BACKUP LOG AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks_Log.trn'
WITH INIT,
NAME = 'AdventureWorks-Transaction Log Backup',
STATS = 10
GO
5.5 高度な T-SQL バックアップ オプション
5.5.1 複数のファイルへのバックアップ
パフォーマンスを高速化するために、バックアップを複数のファイルに分散します。
BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks_1.bak',
DISK = 'D:\Backups\AdventureWorks_2.bak',
DISK = 'E:\Backups\AdventureWorks_3.bak'
WITH FORMAT, INIT
GO
5.5.2 圧縮によるバックアップ
バックアップ ファイルのサイズとネットワーク帯域幅を削減します。
BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks_Compressed.bak'
WITH COMPRESSION,
INIT,
STATS = 10
GO
5.5.3 暗号化によるバックアップ
暗号化で機密データを保護します。
BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks_Encrypted.bak'
WITH COMPRESSION,
ENCRYPTION (
ALGORITHM = AES_256,
SERVER CERTIFICATE = BackupCertificate
),
STATS = 10
GO
5.5.4 パスワード保護によるバックアップ
パスワード保護を追加します (非推奨、代わりに暗号化を使用します):
BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks.bak'
WITH PASSWORD = 'StrongPassword123!',
INIT
GO
5.5.5 ミラーバックアップ
異なる場所に同時コピーを作成します。
BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks.bak'
MIRROR TO DISK = 'D:\Backups\AdventureWorks_Mirror.bak'
WITH FORMAT, INIT
GO
5.6 T-SQLバックアップの例とスクリプト
エラー処理を含む完全なバックアップ スクリプト:
DECLARE @BackupPath NVARCHAR(500);
DECLARE @DatabaseName NVARCHAR(128) = 'AdventureWorks';
DECLARE @BackupDate NVARCHAR(20);
SET @BackupDate = CONVERT(NVARCHAR(20), GETDATE(), 112);
SET @BackupPath = 'C:\Backups\' + @DatabaseName + '_' + @BackupDate + '.bak';
BEGIN TRY
BACKUP DATABASE @DatabaseName
TO DISK = @BackupPath
WITH COMPRESSION,
INIT,
NAME = @DatabaseName + '-Full Backup',
STATS = 10;
PRINT 'Backup completed successfully: ' + @BackupPath;
END TRY
BEGIN CATCH
PRINT 'Backup failed: ' + ERROR_MESSAGE();
END CATCH
GO
6。 バックアップ SQL Server PowerShellを使用したデータベース
6.1 PowerShell バックアップ コマンドレット
SQL Server PowerShell モジュールは、バックアップ自動化用のコマンドレットを提供します。
- バックアップ-Sqlデータベース – データベースのバックアップを作成する
- 復元-Sqlデータベース – データベースのバックアップを復元する
- Get-SqlDatabase – データベース情報を取得する
インポートする SQL Server モジュール:
Import-Module SqlServer
6.2 PowerShell を使用したバックアップ スクリプトの作成
基本的な PowerShell バックアップ コマンド:
Backup-SqlDatabase -ServerInstance "localhost" `
-Database "AdventureWorks" `
-BackupFile "C:\Backups\AdventureWorks.bak" `
-BackupAction Database `
-CompressionOption On
差分バックアップの例:
Backup-SqlDatabase -ServerInstance "localhost" `
-Database "AdventureWorks" `
-BackupFile "C:\Backups\AdventureWorks_Diff.bak" `
-BackupAction Database `
-Incremental
トランザクション ログのバックアップ:
Backup-SqlDatabase -ServerInstance "localhost" `
-Database "AdventureWorks" `
-BackupFile "C:\Backups\AdventureWorks_Log.trn" `
-BackupAction Log
6.3 PowerShell によるバックアップの自動化
複数のデータベースの自動バックアップ スクリプトを作成します。
# Configuration
$ServerInstance = "localhost"
$BackupPath = "C:\Backups"
$Databases = @("AdventureWorks", "TestDB", "ProductionDB")
$Timestamp = Get-Date -Format "yyyyMMdd_HHmmss"
# Create backup directory if not exists
if (-not (Test-Path $BackupPath)) {
New-Item -ItemType Directory -Path $BackupPath
}
# Backup each database
foreach ($Database in $Databases) {
$BackupFile = Join-Path $BackupPath "$Database`_$Timestamp.bak"
try {
Backup-SqlDatabase -ServerInstance $ServerInstance `
-Database $Database `
-BackupFile $BackupFile `
-BackupAction Database `
-CompressionOption On
Write-Host "Successfully backed up $Database to $BackupFile" -ForegroundColor Green
}
catch {
Write-Host "Failed to backup $Database : $_" -ForegroundColor Red
}
}
7。 バックアップ SQL Server コマンドラインを使用したデータベース
SQL Server バックアップを可能にするコマンドラインユーティリティを提供します SQL Server SSMSやグラフィカルインターフェースを使用せずにデータベースを管理できます。これらのツールは、自動化、スクリプト作成、リモート管理のシナリオに不可欠です。
7.1 SQLCMD バックアップ データベースの使用
SQLCMDは、最新のコマンドラインユーティリティです。 SQL Server OSQLに代わるものです。強化された機能を備えており、コマンドプロンプトからT-SQLコマンドを実行するための推奨ツールです。
7.1.1 基本的なSQLCMD構文
sqlcmd -S ServerName -d DatabaseName -Q "BACKUP DATABASE statement"
- -S: 指定する SQL Server インスタンス名
- -d: データベース名を指定します
- -質問: クエリを実行して終了します
- -と: Windows認証を使用する
- -U: 指定する SQL Server ログインユーザー名
- -NS: パスワードを指定します SQL Server login
7.1.2 SQLCMDによるバックアップの作成
バックアップするには SQL Server SQLCMD を使用する場合は、次の手順に従います。
- 店は開いています コマンドプロンプト or PowerShellの
- に移動します SQL Server ツールディレクトリ(通常はインストール時にPATHに追加されます)
- 適切なパラメータを使用してSQLCMDバックアップデータベースコマンドを実行します。
- バックアップファイルが正常に作成されたことを確認します
Windows 認証を使用した完全バックアップ コマンドの例:
sqlcmd -S localhost -E -Q "BACKUP DATABASE AdventureWorks TO DISK='C:\Backups\AdventureWorks.bak' WITH COMPRESSION, INIT"
使用例 SQL Server 認証:
sqlcmd -S localhost -U sa -P YourPassword -Q "BACKUP DATABASE AdventureWorks TO DISK='C:\Backups\AdventureWorks.bak' WITH COMPRESSION, INIT"
SQLCMD による差分バックアップの作成
sqlcmd -S localhost -E -Q "BACKUP DATABASE AdventureWorks TO DISK='C:\Backups\AdventureWorks_Diff.bak' WITH DIFFERENTIAL, COMPRESSION, INIT"
SQLCMD を使用したトランザクション ログ バックアップの作成
sqlcmd -S localhost -E -Q "BACKUP LOG AdventureWorks TO DISK='C:\Backups\AdventureWorks_Log.trn' WITH COMPRESSION, INIT"
7.1.3 パブリッシャーデータベースのバックアップ SQL Server Replication
パブリッシャーデータベースをバックアップする場合 SQL Server レプリケーションでは、WITH REPLICATION オプションを使用してレプリケーション メタデータを保持し、トランザクションの一貫性を確保します。
-- Backup publisher database with replication support
BACKUP DATABASE PublisherDB
TO DISK = 'C:\Backup\PublisherDB_Full.bak'
WITH REPLICATION,
COMPRESSION,
CHECKSUM,
INIT,
STATS = 10;
GO
の詳細について SQL Server レプリケーションについては、 総合ガイド.
7.2 OSQLバックアップデータベースの使用
OSQLは、 SQL ServerMicrosoft では代わりに SQLCMD の使用を推奨していますが、古いスクリプトやシステムとの下位互換性を保つために OSQL も引き続き使用できます。
7.2.1 基本的なOSQL構文
OSQL 構文は SQLCMD に似ています。
osql -S ServerName -d DatabaseName -Q "BACKUP DATABASE statement"
- -S: SQL Server インスタンス名
- -d: データベース名
- -質問: クエリを実行して終了する
- -と: 信頼された接続(Windows 認証)を使用します
- -U: ログインユーザー名
- -NS: ログインパスワード
7.2.2 OSQLによるバックアップの作成
OSQL バックアップ データベース操作を実行するには:
- 店は開いています コマンドプロンプト
- OSQLが利用可能であることを確認する SQL Server インストール
- OSQLバックアップコマンドを実行する
完全バックアップの例:
osql -S localhost -E -Q "BACKUP DATABASE AdventureWorks TO DISK='C:\Backups\AdventureWorks.bak' WITH INIT"
差分バックアップの例:
osql -S localhost -E -Q "BACKUP DATABASE AdventureWorks TO DISK='C:\Backups\AdventureWorks_Diff.bak' WITH DIFFERENTIAL, INIT"
8. 第三者 SQL Server バックアップツール
一方、 SQL Server ネイティブバックアップ機能に加え、サードパーティ製ツールは、複雑な要件を持つ組織向けに、高度な機能、自動化、エンタープライズグレードの管理機能を提供します。これらのソリューションは、高度な圧縮、集中管理、そしてバックアップのための合理化されたワークフローを提供します。 SQL Server 複数の環境にまたがるデータベース。
8.1 Veeamバックアップ SQL Server
Veeamは、バックアップに特化した包括的なデータ保護ソリューションを提供しています。 SQL Server 運用システムへの影響を最小限に抑えながらデータベースを構築します。
主な特長:
- アプリケーション対応処理 SQL Server バックアップの一貫性
- トランザクションログのバックアップと管理
- きめ細かな復元オプションを備えたポイントインタイムリカバリ
- Veeam Backup & Replicationとの統合による統合データ保護
- 自動バックアップ検証と検証
- Always On 可用性グループのサポート
- VMレベルとアプリケーションレベル SQL Server バックアップ オプション
8.2 バラクーダバックアップ SQL Server
バラクーダは、MS向けに簡素化された管理機能を備えたクラウド統合バックアップソリューションを提供します。 SQL Server バックアップ データベース操作。
主な特長:
- 自動化 SQL Server バックアップのスケジュール
- Barracuda Cloud Storageへの組み込みクラウドレプリケーション
- グローバル重複排除と圧縮
- 即時のローカルリカバリ機能
- Webベースの管理コンソール
- 完全バックアップ、差分バックアップ、トランザクション ログ バックアップのサポート
- 不変のバックアップによるランサムウェア対策
8.3 Veritas NetBackup 用 SQL Server
Veritas NetBackupは、包括的な保護を提供するエンタープライズグレードのバックアッププラットフォームです。 SQL Server 複雑な IT 環境にわたるデータベース。
主な特長:
- 数千の企業規模のバックアップ管理 SQL Server インスタンス
- 高度な重複排除および圧縮アルゴリズム
- 柔軟なバックアップポリシーとスケジュール
- すべてのサポート SQL Server 回復モデル
- テープライブラリとの統合rariesとクラウドストレージ
- データベース、テーブル、オブジェクトのきめ細かなリカバリ
- マルチプラットフォームサポート(Windows、Linux SQL Server)
- 自動バックアップライフサイクル管理
8.4 Commvault Complete Backup & Recovery for SQL Server
Commvaultは包括的なバックアップを備えたインテリジェントなデータ管理を提供します SQL Server 機能と高度な自動化機能を備えています。
主な特長:
- AIによるバックアップ最適化と異常検出
- バックアップ、リカバリ、アーカイブのための統合プラットフォーム
- 高機能 SQL Server バックアップ圧縮(最大90%削減)
- 自動化された災害復旧オーケストレーション
- ほぼゼロのRPO保護を実現するLive Sync
- へのサポート SQL Server オンプレミス、クラウド、ハイブリッド展開
- スナップショットベースのバックアップのための IntelliSnap
- 包括的なコンプライアンスと電子情報開示機能
8.5 Cohesity DataProtect 向け SQL Server
Cohesityは、現代のビジネス環境向けにハイパーコンバージドインフラストラクチャによる次世代データ管理を提供します。 SQL Server バックアップ操作。
主な特長:
- 管理を簡素化するWebスケールアーキテクチャ
- 瞬時に大量復元が可能 SQL Server データベースを追加しました
- アプリケーション整合性スナップショット
- すべてのバックアップにわたるグローバル重複排除
- ネイティブクラウド統合(AWS、Azure、Google Cloud)
- 組み込みの分析および監視ダッシュボード
- データベースのクローン作成とテスト機能
- 不変のスナップショットによるランサムウェア対策
8.6 レッドゲート SQL バックアップ プロ
Red Gate SQL Backup Proは、最適化に特化したツールです。 SQL Server 優れた圧縮とパフォーマンスによるバックアップおよび復元操作。
主な特長:
- 業界トップクラスの圧縮率(最大95%)
- バックアップのためのネットワークの復元力 SQL Server 信頼性の低い接続を介して
- 256ビットAESによるバックアップ暗号化
- バックアップコピーの検証と整合性チェック
- 詳細なバックアップ履歴とレポート
- との統合 SQL Server 管理スタジオ
- ネットワークロケーションとクラウドストレージへのバックアップのサポート
- 並列バックアップと復元により操作を高速化
9. 復元方法 SQL Server データベース
9.1 復元プロセスを理解する
復元 SQL Server データベースはバックアップファイルからデータベースを再作成します。復元プロセスでは、バックアップファイルを読み取り、データベースをバックアップ時の状態に再構築します。
重要な考慮事項:
- 復元すると既存のデータベースが上書きされます
- 復元中にユーザーが切断される
- 復元はバックアップの順序(完全、差分、ログ)に従う必要があります。
- 復元操作中はデータベースが利用できません
9.2 SSMSを使用した完全バックアップの復元
完全なデータベース バックアップを復元するには、次の手順に従います。
9.2.1 ステップバイステップの復元プロセス
- 店は開いています SQL Server 管理スタジオ サーバーに接続します
- In オブジェクトエクスプローラー、 右クリック データベース
- 選択する データベースを復元する
- ソース セクション、選択 デバイス
- クリック ... バックアップファイルを参照するボタン
- 詳しくはこちら 追加 .bakファイルに移動します
- バックアップファイルを選択してクリック OK
- 開催場所 セクションでデータベース名を入力します
- 復元するバックアップセットを確認する
- 詳しくはこちら OK その後、Ptar復元
9.2.2 復元オプションと設定
詳しくはこちら オプション 左側のパネルで設定します:
- 既存のデータベースを上書きする (WITH REPLACE) – 既存のデータベースへの復元が可能
- レプリケーション状態を保持する(KEEP_REPLICATION を使用) – を保管してください SQL Server レプリケーション 状態
- 復元されたデータベースへのアクセスを制限する (WITH RESTRICTED_USER) – 制限 post-アクセスを復元する
- 回復状態 – リカバリ付き復元またはリカバリなし復元のいずれかを選択します
9.3 差分バックアップの復元
差分復元には完全バックアップと差分バックアップの両方が必要です。
- まず、フルバックアップを復元します 回復なし オプション
- 次に差分バックアップを復元します RECOVERY オプション
T-SQL の例:
-- Restore full backup (NORECOVERY to allow differential)
RESTORE DATABASE AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Full.bak'
WITH NORECOVERY, REPLACE;
-- Restore differential backup (RECOVERY to complete)
RESTORE DATABASE AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Diff.bak'
WITH RECOVERY;
GO
9.4 トランザクションログバックアップによる復元
ポイントインタイムリカバリの場合は、次の順序で復元します。
- NORECOVERYでフルバックアップを復元する
- NORECOVERY で差分バックアップを復元する(利用可能な場合)
- NORECOVERYを使用してトランザクションログのバックアップを順番に復元する
- RECOVERYで最終ログバックアップを復元する
-- Restore full backup
RESTORE DATABASE AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Full.bak'
WITH NORECOVERY, REPLACE;
-- Restore first log backup
RESTORE LOG AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Log1.trn'
WITH NORECOVERY;
-- Restore second log backup with recovery
RESTORE LOG AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Log2.trn'
WITH RECOVERY;
GO
9.5 ポイントインタイムリストア
STOPAT オプションを使用して、データベースを特定の時点に復元します。
-- Restore to specific time: January 15, 2025 at 2:30 PM
RESTORE DATABASE AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Full.bak'
WITH NORECOVERY, REPLACE;
RESTORE LOG AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Log.trn'
WITH RECOVERY, STOPAT = '2025-01-15 14:30:00';
GO
9.6 テーブルの復元
SQL Server バックアップファイルからのテーブルレベルの直接復元はサポートされていません。ただし、いくつかの解決策はあります。
9.6.1 方法 1: データベース スナップショット (予防に最適)
データベーススナップショットは、問題が発生する前に作成しておくと、テーブルデータを復元する最速の方法となります。スナップショットとは、特定の時点におけるデータベースの読み取り専用の静的ビューです。
データベース スナップショットの作成:
-- Create snapshot before making changes
CREATE DATABASE ProductionDB_Snapshot_20250107
ON
( NAME = ProductionDB_Data,
FILENAME = 'C:\Snapshots\ProductionDB_Snapshot.ss' )
AS SNAPSHOT OF ProductionDB;
GO
スナップショットからテーブルデータを復元する:
USE ProductionDB;
GO
-- Replace entire table content
BEGIN TRANSACTION;
-- Disable constraints temporarily
ALTER TABLE dbo.Orders NOCHECK CONSTRAINT ALL;
-- Clear current data
TRUNCATE TABLE dbo.Orders;
-- Restore from snapshot
INSERT INTO dbo.Orders
SELECT * FROM ProductionDB_Snapshot_20250107.dbo.Orders;
-- Re-enable constraints
ALTER TABLE dbo.Orders CHECK CONSTRAINT ALL;
COMMIT TRANSACTION;
GO
バージョン要件: データベーススナップショットは、 SQL Server Enterprise Edition(全バージョン)、Standard Editiontarと鳴る SQL Server 2016SP1。
9.6.2 方法2: テンポに戻すrary データベース (Most 一般)
この方法は、問題が発生した後にテーブル データを回復する必要があり、スナップショットが存在しない場合に機能します。
- バックアップをテンポに復元するraryデータベース
- テンポからテーブルデータをコピーするraryデータベースを現在のデータベースへ
9.7 ページの復元
ページ復元は、データベース全体を復元せずに個々の破損ページを復元し、ダウンタイムを最小限に抑えます。 tar破損したページのみを取得します。この機能は、完全復旧モデルまたは一括ログ復旧モデルでのみ使用可能であり、ページバックアップから現在のログファイルまでのトランザクションログバックアップの連続したチェーンが必要です。
ページの復元を実行するには、まず破損したページを特定し、ログ末尾のバックアップを取り、特定のページを復元してから、すべてのトランザクション ログを適用します。
-- Identify damaged pages
SELECT * FROM msdb.dbo.suspect_pages
WHERE database_id = DB_ID('AdventureWorks');
-- Take tail-log backup
BACKUP LOG AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks_TailLog.trn'
WITH NORECOVERY;
-- Restore damaged pages
RESTORE DATABASE AdventureWorks
PAGE = '1:123, 1:456'
FROM DISK = 'C:\Backups\AdventureWorks_Full.bak'
WITH NORECOVERY;
-- Apply transaction logs
RESTORE LOG AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Log1.trn'
WITH NORECOVERY;
RESTORE LOG AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_TailLog.trn'
WITH RECOVERY;
GO
メモ: 単純復旧モデルではページの復元は利用できません。システムテーブルまたはプライマリファイルグループのメタデータからページを復元することはできません。
9.8 部分的な復元
段階的部分復元(部分復元)は、ファイルグループレベルで段階的にデータベースを復元します。tarプライマリファイルグループとの連携。これにより、重要なデータは即座にオンラインになり、重要度の低いデータはバックグラウンドで復元されます。単純復旧モデルでは、すべての読み取り/書き込みファイルグループはプライマリファイルグループと一緒に復元する必要があります。読み取り専用ファイルグループのみを個別に復元できます。完全復旧モデルまたは一括ログ復旧モデルでは、トランザクションログを適用した後、各ファイルグループを個別にオンラインにすることができます。
| 復旧モデル | 部分的な復元動作 |
|---|---|
| 簡単な拡張で | プライマリ ファイル グループとすべての読み取り/書き込みファイル グループが一緒に復元されます。読み取り専用ファイル グループは個別に復元されます。 |
| フル/一括ログ | 各ファイル グループは、ファイル グループ レベルで個別に復元されます。 |
完全復旧モデルの例 – 最初にプライマリ ファイル グループを復元してデータベースをオンラインにし、次にデータベースが動作可能な状態でセカンダリ ファイル グループを復元します。
-- Stage 1: Restore primary filegroup (database comes online)
RESTORE DATABASE AdventureWorks
FILEGROUP = 'PRIMARY'
FROM DISK = 'C:\Backups\AdventureWorks_Full.bak'
WITH PARTIAL, NORECOVERY;
RESTORE LOG AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Log1.trn'
WITH RECOVERY;
GO
-- Stage 2: Restore secondary filegroup (database stays online)
RESTORE DATABASE AdventureWorks
FILEGROUP = 'HistoricalData'
FROM DISK = 'C:\Backups\AdventureWorks_Full.bak'
WITH NORECOVERY;
RESTORE LOG AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Log1.trn'
WITH RECOVERY;
GO
シンプル復旧モデルの例:
-- Restore primary with all read-write filegroups
RESTORE DATABASE AdventureWorks
FILEGROUP = 'PRIMARY'
FROM DISK = 'C:\Backups\AdventureWorks_Full.bak'
WITH PARTIAL, RECOVERY;
-- Restore read-only filegroup separately
RESTORE DATABASE AdventureWorks
FILEGROUP = 'ReadOnlyArchive'
FROM DISK = 'C:\Backups\AdventureWorks_ReadOnly.bak'
WITH RECOVERY;
GO
9.9 T-SQLコマンドを使用した復元
ファイルの再配置を含む完全な復元スクリプト:
RESTORE DATABASE AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks.bak'
WITH MOVE 'AdventureWorks_Data' TO 'D:\Data\AdventureWorks.mdf',
MOVE 'AdventureWorks_Log' TO 'E:\Logs\AdventureWorks.ldf',
REPLACE,
STATS = 10;
GO
9.10 復元前のバックアップの整合性の検証
復元せずにバックアップの有効性を確認します。
RESTORE VERIFYONLY
FROM DISK = 'C:\Backups\AdventureWorks.bak';
GO
このコマンドは、データベースを実際に復元せずに、バックアップ セットが完全で読み取り可能であることを確認します。
10. SQL Server バックアップのベストプラクティス
10.1 バックアップ戦略の策定
10.1.1 ビジネス要件の評価
バックアップを実装する前に、次の点を評価します。
- データの重要度: このデータは運用にとってどの程度重要ですか?
- 変更頻度: データはどのくらいの頻度で変更されますか?
- データベースのサイズ: データベースの大きさはどれくらいですか?
- 利用可能な資源: 利用可能なストレージと帯域幅はどれくらいですか?
- コンプライアンスのニーズ: どのような規制に従う必要がありますか?
10.1.2 RTOとRPOの定義
目標復旧時間 (RTO): 許容可能な最大ダウンタイム。業務を復旧するのに必要な速さを決定します。
復旧ポイント目標 (RPO): 許容可能な最大データ損失。バックアップの頻度を決定します。
| RTO/RPO要件 | 推奨されるバックアップ戦略 |
|---|---|
| RPO: 時間、RTO: 時間 | 毎日のフルログ + 1~2時間ごとのトランザクションログ |
| RPO: 分、RTO: 時間 | 毎日15~30分ごとにフルバックアップ+ログバックアップ |
| RPO: ほぼゼロ、RTO: 数分 | Always On 可用性グループ + 頻繁なログバックアップ |
| RPO: 日、RTO: 日 | 週次フル+日次差分 |
10.2 バックアップスケジュールの作成
10.2.1 頻度の推奨事項
運用データベースの一般的なバックアップ スケジュール:
- 完全バックアップ: 毎週(活動が少ない日曜日の夜)
- 差分バックアップ: 毎日(毎晩)
- トランザクション ログのバックアップ: 営業時間中は15~30分ごと
- コピーのみのバックアップ: テストや開発の必要に応じて
10.2.2 パフォーマンスと保護のバランス
スケジュールを設定するときは、次の要素を考慮してください。
- オフピーク時間: アクティビティの少ない時間帯に完全バックアップを実行する
- リソースへの影響: 圧縮によりI/Oは削減されるがCPU使用率は増加する
- ネットワーク帯域幅: トラフィックが少ないときにネットワークバックアップをスケジュールする
- バックアップウィンドウ: 営業時間前にバックアップを完了することを確認する
10.3 バックアップストレージのベストプラクティス
10.3.1 オンサイトストレージとオフサイトストレージ
オンサイトバックアップ:
- バックアップと復元時間の短縮
- 下cost 高頻度アクセス用
- 地域災害に対して脆弱
- 迅速な回復シナリオに最適
オフサイトバックアップ:
- 特定地域における災害からの保護
- 地理的冗長性要件への準拠
- 復元時間が遅い
- 災害復旧に不可欠
10.3.2 クラウドバックアップオプション
クラウド ストレージの利点:
- Azure BLOB ストレージ: ネイティブ SQL Server 統合、cost- 頻度の低いアクセスに効果的
- アマゾン S3: 耐久性と柔軟性に優れたストレージ層
- Googleクラウドストレージ: 競争力のある価格、世界中で入手可能
10.3.3 バックアップ保持ポリシー
サンプル保持ポリシー:
- 毎日のバックアップを7日間保存する
- 毎週のバックアップを4週間保存する
- 毎月のバックアップを12か月間保存する
- 毎年のバックアップを7年間保存する(コンプライアンス)
10.4 バックアップの圧縮と暗号化
圧縮の利点:
- バックアップファイルのサイズを50~70%削減
- バックアップ時間を短縮
- 保管容量を低下させるosts
- リモートバックアップのネットワーク帯域幅を削減
暗号化のベストプラクティス:
- 機密データを含むバックアップは常に暗号化する
- AES 256ビット暗号化を使用する
- 安全な証明書または鍵管理
- 暗号化キーを文書化し、別々に保管する
10.5 バックアップのテストと検証
10.5.1 定期的な復元テスト
復元手順を四半期ごとまたは毎月テストします。
- バックアップをテスト環境に復元する
- データの整合性と完全性を検証する
- アプリケーションの機能を確認する
- 復元時間の文書化(RTOの検証)
- 問題を特定して解決する
10.5.2 RESTORE VERIFYONLYの使用
バックアップ検証を自動化:
-- Verify backup integrity
RESTORE VERIFYONLY
FROM DISK = 'C:\Backups\AdventureWorks.bak'
WITH CHECKSUM;
GO
バックアップの完了直後、またはスケジュールされたメンテナンスの一環として検証を実行します。
10.6 バックアップの自動化と監視
10.6.1 SQL Server エージェントの仕事
自動バックアップ ジョブを作成します。
- 研究開発を拡張 SQL Server エージェント
SSMSで
- 右クリックする 求人 をクリックして 新しい仕事
- ジョブに名前を付けます(例:「毎日のフルバックアップ」)
- 加える 手順 T-SQLバックアップコマンドを使用
- 作る スケジュール 実行時間
- 構成 お知らせ 成功/失敗について
10.6.2 メンテナンス計画
SQL Server メンテナンス プランは、バックアップ自動化のための視覚的なインターフェイスを提供します。
- MFAデバイスに移動する マネジメント -> メンテナンスプラン
- 右クリックして選択 メンテナンスプランウィザード
- 自動化するバックアップタスクを選択する
- バックアップスケジュールとオプションを構成する
- レポートとログの設定
10.6.3 バックアップのアラートと通知
電子メール通知を設定します。
- データベースメールを設定する SQL Server
- バックアップ失敗のアラートを作成する
- バックアップジョブの履歴を監視する
- 管理者に概要レポートを送信する
10.7 ドキュメントと災害復旧計画
包括的な文書を維持します。
- バックアップスケジュール: いつ、何をバックアップするか
- 保持ポリシー: バックアップの保存期間
- 保管場所: バックアップの保存場所
- 復元手順: ステップバイステップの回復手順
- 連絡先情報: 主要な担当者とベンダー
- 回復テストの結果: 文書化されたテスト結果
11。 高度な SQL Server バックアップシナリオ
11.1 大規模データベース(VLDB)のバックアップ
11.1.1 ファイルとファイルグループの戦略
数百ギガバイトを超えるデータベースの場合:
- 読み取り専用データと読み取り/書き込みデータを異なるファイルグループに分離する
- 読み取り専用ファイルグループを頻繁にバックアップしない
- アクティブなファイルグループに頻繁なバックアップを集中させる
- きめ細かな制御のためにファイルレベルのバックアップを使用する
ファイルバックアップの例:
-- Back up specific file
BACKUP DATABASE LargeDB
FILE = 'LargeDB_Data1'
TO DISK = 'C:\Backups\LargeDB_File1.bak'
WITH COMPRESSION;
GO
11.1.2 バックアップパフォーマンスの最適化
VLDB バックアップ パフォーマンスの向上:
- ストライプバックアップ: 複数のファイルに同時に書き込む
- 圧縮: I/Oとストレージ要件を削減
- 複数のバックアップデバイス: バックアップ操作を並列化する
- 高速ストレージ: バックアップステージングにSSDを使用する
- バッファ数: BUFFERCOUNTオプションを増やす
- 最大転送サイズ: MAXTRANSFERSIZE設定を最適化する
-- Optimized VLDB backup
BACKUP DATABASE LargeDB
TO DISK = 'C:\Backups\LargeDB_1.bak',
DISK = 'D:\Backups\LargeDB_2.bak',
DISK = 'E:\Backups\LargeDB_3.bak'
WITH COMPRESSION,
BUFFERCOUNT = 100,
MAXTRANSFERSIZE = 4194304;
GO
11.2 Always On 可用性グループでのバックアップ
Always On 可用性グループは、レプリカ間でバックアップ負荷を分散します。
- バックアップ設定(プライマリ、セカンダリ、または任意のレプリカ)を構成する
- バックアップをセカンダリレプリカにオフロードしてプライマリワークロードを削減する
- セカンダリレプリカでCOPY_ONLYバックアップを使用する
- バックアップの優先度設定を監視する
-- Check backup preferences
SELECT
ag.name AS AvailabilityGroup,
ar.replica_server_name,
ar.backup_priority
FROM sys.availability_replicas ar
INNER JOIN sys.availability_groups ag ON ar.group_id = ag.group_id;
GO
11.3 データベースミラーリングのバックアップ
データベースミラーリングのシナリオでは、次のようになります。
- 定期的にプリンシパルデータベースをバックアップする
- トランザクションログのバックアップはミラーリングに不可欠である
- ミラー データベースは RESTORING 状態です (直接バックアップできません)
- フェイルオーバー後にミラーのバックアップを検討する
11.4 Azure Blob Storageへのバックアップ
SQL Server Azure Blob Storage に直接バックアップできます。
- Azureストレージアカウントを作成する
- 創造する SQL Server Azure認証の資格情報
- バックアップ先にURL構文を使用する
-- Create credential for Azure
CREATE CREDENTIAL [https://mystorageaccount.blob.core.windows.net/backups]
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = 'your_SAS_token';
GO
-- Backup to Azure
BACKUP DATABASE AdventureWorks
TO URL = 'https://mystorageaccount.blob.core.windows.net/backups/AdventureWorks.bak'
WITH COMPRESSION,
STATS = 10;
GO
11.5 URLへのバックアップ
URL にバックアップする利点:
- 無制限のクラウドストレージ容量
- 地理的な冗長性は自動的に処理されます
- 従量課金制の価格設定モデル
- ローカルディスク容量は不要
- バックアップごとに最大 64 個の URL をサポート (ストライピング)
11.6 パフォーマンス向上のためのストライプバックアップ
ストライプ バックアップはデータを複数のファイルに分割し、I/O を高速化します。
-- Striped backup to 4 files
BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AW_Stripe1.bak',
DISK = 'D:\Backups\AW_Stripe2.bak',
DISK = 'E:\Backups\AW_Stripe3.bak',
DISK = 'F:\Backups\AW_Stripe4.bak'
WITH COMPRESSION, FORMAT;
GO
注意: 復元にはすべてのストライプファイルが必要です。ファイルが1つでも欠けていると、バックアップは使用できなくなります。
12。 トラブルシューティング SQL Server バックアップの問題
12.1 一般的なバックアップエラーと解決策
エラー:「オペレーティング システム エラー 5: アクセスが拒否されました」
- 原因: SQL Server サービスアカウントに権限がありません
- 解決策: 書き込み権限を付与する SQL Server バックアップフォルダのサービスアカウント
エラー:「バックアップデバイスを開けません…デバイスエラーまたはデバイスがオフラインです」
- 原因: 無効なパスまたは利用できないネットワーク共有
- 解決策: パスが存在することを確認し、ネットワーク接続をチェックし、十分なディスク容量を確保します
エラー:「ディスクの空き容量が足りません」
- 原因: バックアップ用のディスク容量が不足しています
- 解決策: ディスクスペースを解放し、圧縮を使用し、別の場所にバックアップする
エラー: 「データベースは使用中です。他のユーザーがデータベースを使用しています。」
- 原因: 復元中のアクティブな接続
- 解決策: WITH REPLACE オプションを使用するか、最初にユーザーを切断してください
12.2 バックアップパフォーマンスの問題
遅いバックアップを診断する:
- ディスクI/Oパフォーマンスをチェックするには パフォーマンスモニタ
- STATSオプションでバックアップの進行状況を監視する
- レビュー SQL Server ボトルネックのエラーログ
- I/Oを削減するために圧縮を検討する
- 複数のディスクにまたがるストライプバックアップを使用する
バックアップの進行状況を監視するためのクエリ:
SELECT
session_id,
command,
percent_complete,
CAST(((DATEDIFF(s,start_time,GetDate()))/3600) as varchar) + ' hour(s), '
+ CAST((DATEDIFF(s,start_time,GetDate())%3600)/60 as varchar) + 'min, '
+ CAST((DATEDIFF(s,start_time,GetDate())%60) as varchar) + ' sec' as running_time,
CAST((estimated_completion_time/3600000) as varchar) + ' hour(s), '
+ CAST((estimated_completion_time %3600000)/60000 as varchar) + 'min, '
+ CAST((estimated_completion_time %60000)/1000 as varchar) + ' sec' as est_time_to_go,
dateadd(second,estimated_completion_time/1000, getdate()) as est_completion_time
FROM sys.dm_exec_requests
WHERE command LIKE 'BACKUP%';
GO
12.3 スペースとストレージの問題
ストレージの問題を防ぐ:
- 保持ポリシーを実装します。 古いバックアップを自動的に削除する
- 圧縮を使用: バックアップファイルのサイズを50~70%削減
- より安価なストレージにアーカイブする: 古いバックアップをアーカイブストレージに移動する
- ディスク容量を監視: ディスク容量不足のアラートを設定する
- バックアップサイズの見積もり: バックアップ前に予想サイズを計算する
バックアップサイズの見積もり:
-- Estimate full backup size
EXEC sp_spaceused;
GO
12.4 権限とアクセスの問題
バックアップに必要な権限:
- バックアップデータベース 許可
- db_バックアップオペレーター 役割のメンバーシップ
- sysadmin サーバーロール(すべてのバックアップ操作用)
バックアップ権限を付与します:
-- Grant backup permission to user
GRANT BACKUP DATABASE TO [BackupUser];
GRANT BACKUP LOG TO [BackupUser];
GO
-- Add user to backup operator role
ALTER ROLE db_backupoperator ADD MEMBER [BackupUser];
GO
12.5 破損したバックアップファイル
破損したバックアップを検出して処理します。
バックアップの整合性を確認します。
RESTORE VERIFYONLY
FROM DISK = 'C:\Backups\AdventureWorks.bak'
WITH CHECKSUM;
GO
将来のバックアップでCHECKSUMを有効にします。
BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks.bak'
WITH CHECKSUM, INIT;
GO
予防戦略:
- バックアップ中は常にCHECKSUMオプションを使用する
- 作成後すぐにバックアップを検証する
- 定期的に復元をテストする
- 信頼性の高いストレージにバックアップを保存する
- 複数のバックアップコピーを維持する
12.6 破損したバックアップファイルからデータを回復する
バックアップファイルが破損していても、そこからデータを回復したい場合は、次のようなサードパーティ製のツールを使用できます。 DataNumen SQL Recovery、 以下のように:
- Start DataNumen SQL Recovery.
- フィルターを「すべてのファイル(*.*)」に変更して、破損したバックアップ ファイルをソース ファイルとして選択します。
- 必要に応じて出力 .MDF ファイルを設定します。
- 「S」をクリックしますtar「t リカバリ」をクリックし、指示に従ってデータベースをリカバリします。
- 回復プロセスが完了すると、新しい回復データベースが SQL Server 復元されたデータがすべて含まれています。
13. SQL Server バックアップセキュリティ
13.1 バックアップファイルの保護
不正アクセスからバックアップ ファイルを保護します。
- ファイルシステムの権限: アクセスを承認された管理者のみに制限する
- ネットワークセキュリティー: ネットワークバックアップには安全なプロトコルを使用する
- 物理的なセキュリティ: バックアップメディアを安全な場所に保管する
- アクセスログ: バックアップファイルへのアクセスを監査する
13.2 暗号化オプション
SQL Server 透過的なバックアップ暗号化をサポートします:
暗号化用の証明書を作成します。
-- Create master key
USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'StrongP@ssw0rd!';
GO
-- Create certificate
CREATE CERTIFICATE BackupCertificate
WITH SUBJECT = 'Database Backup Certificate',
EXPIRY_DATE = '2026-12-31';
GO
暗号化されたバックアップ:
BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks_Encrypted.bak'
WITH COMPRESSION,
ENCRYPTION (
ALGORITHM = AES_256,
SERVER CERTIFICATE = BackupCertificate
);
GO
重要:証明書と秘密鍵は別々にバックアップしてください。これらがないと、暗号化されたバックアップを復元できません。
-- Backup certificate
BACKUP CERTIFICATE BackupCertificate
TO FILE = 'C:\Certificates\BackupCertificate.cer'
WITH PRIVATE KEY (
FILE = 'C:\Certificates\BackupCertificate.key',
ENCRYPTION BY PASSWORD = 'C3rt!f!c@t3P@ss'
);
GO
13.3 アクセス制御と権限
最小権限の原則を実装する:
- 必要なアカウントにのみバックアップ権限を付与する
- バックアップと復元操作には別々のアカウントを使用する
- バックアップにsaアカウントを使用しない
- 定期的にバックアップ権限を監査する
- 不要になったら権限を削除する
13.4 コンプライアンスに関する考慮事項
規制要件への対応:
- GDPR: 個人データを含むバックアップを暗号化し、保持ポリシーを実装する
- HIPAA: バックアップでPHIを暗号化し、アクセスを制御し、監査証跡を維持する
- PCI DSS: カード会員データのバックアップを暗号化し、バックアップストレージを保護
- ソックス: バックアップの整合性、文書保持ポリシーを維持する
14. バックアップ操作の監視と保守
14.1 バックアップ履歴の追跡
SQL Server バックアップ履歴を msdb データベースに保存します。
-- View recent backup history
SELECT
bks.database_name,
bks.backup_start_date,
bks.backup_finish_date,
CASE bks.type
WHEN 'D' THEN 'Full'
WHEN 'I' THEN 'Differential'
WHEN 'L' THEN 'Log'
ELSE 'Other'
END AS backup_type,
bks.backup_size / 1024 / 1024 AS backup_size_mb,
bkmf.physical_device_name
FROM msdb.dbo.backupset bks
INNER JOIN msdb.dbo.backupmediafamily bkmf ON bks.media_set_id = bkmf.media_set_id
WHERE bks.backup_start_date >= DATEADD(DAY, -7, GETDATE())
ORDER BY bks.backup_start_date DESC;
GO
最近のバックアップのないデータベースを検索します。
SELECT
d.name AS database_name,
MAX(bs.backup_finish_date) AS last_backup_date,
DATEDIFF(DAY, MAX(bs.backup_finish_date), GETDATE()) AS days_since_last_backup
FROM sys.databases d
LEFT JOIN msdb.dbo.backupset bs ON d.name = bs.database_name
WHERE d.database_id > 4 -- Exclude system databases
GROUP BY d.name
HAVING MAX(bs.backup_finish_date) < DATEADD(DAY, -7, GETDATE())
OR MAX(bs.backup_finish_date) IS NULL
ORDER BY last_backup_date;
GO
14.2使用 SQL Server レポート
SQL Server Management Studio には、組み込みのバックアップ レポートが含まれています。
- オブジェクトエクスプローラーでデータベースを右クリック
- 選択する レポート -> 標準レポート
- 利用可能なレポートから選択してください:
- バックアップと復元イベント
- すべてのバックアップ
- トランザクションログの配送ステータス
14.3 サードパーティの監視ツール
商用監視ソリューション:
- SQL セントリー: 包括的な監視と警告
- Redgate SQL モニター: リアルタイム監視と診断ostICS
- SolarWinds データベース パフォーマンス アナライザー: パフォーマンスとバックアップの監視
- Idera SQL診断ostic マネージャー: バックアップの検証とアラート
14.4 バックアップヘルスチェック
ヘルスチェック手順を作成します。
-- Backup health check procedure
CREATE PROCEDURE sp_BackupHealthCheck
AS
BEGIN
-- Check for databases without recent full backup
SELECT
'Missing Recent Full Backup' AS issue,
d.name AS database_name,
ISNULL(CAST(MAX(bs.backup_finish_date) AS VARCHAR), 'Never') AS last_backup
FROM sys.databases d
LEFT JOIN msdb.dbo.backupset bs
ON d.name = bs.database_name AND bs.type = 'D'
WHERE d.database_id > 4
GROUP BY d.name
HAVING MAX(bs.backup_finish_date) < DATEADD(DAY, -7, GETDATE()) OR MAX(bs.backup_finish_date) IS NULL; -- Check for failed backup jobs SELECT 'Failed Backup Job' AS issue, j.name AS job_name, jh.run_date, jh.run_time, jh.message FROM msdb.dbo.sysjobs j INNER JOIN msdb.dbo.sysjobhistory jh ON j.job_id = jh.job_id WHERE jh.run_status = 0 -- Failed AND jh.step_id = 0 AND jh.run_date >= CONVERT(INT, CONVERT(VARCHAR, GETDATE()-7, 112))
AND j.name LIKE '%backup%';
END
GO
15. SQL Server バックアップに関するよくある質問
15.1 どのくらいの頻度でバックアップすべきか SQL Server?
バックアップの頻度は、復旧ポイント目標 (RPO) によって異なります。
- 重要な本番データベース: 完全な週次、差分の日次、15~30分ごとのログ
- 標準的な本番データベース: 完全な週次、差分日次、1~2時間ごとのログ
- 開発データベース: 毎日または毎週のフル
- 読み取り専用データベース: データが変更されるたびに完全
15.2 完全バックアップと差分バックアップの違いは何ですか?
完全バックアップはデータベース全体をコピーしますが、差分バックアップは前回の完全バックアップ以降の変更のみをキャプチャします。差分バックアップはファイルサイズが小さく高速ですが、復元には元の完全バックアップが必要です。
15.3 バックアップできますか SQL Server 実行中ですか?
はい、 SQL Server オンラインバックアップをサポートします。ユーザーはバックアップ中でも作業を継続できます。 SQL Server トランザクション ログを使用して一貫性を維持し、同時変更があってもバックアップが有効であることを保証します。
15.4 どのくらいの期間 SQL Server バックアップを取りますか?
バックアップ期間は以下に応じて異なります:
- データベースのサイズ: データベースが大きいほど時間がかかる
- バックアップの種類: 完全バックアップは最も時間がかかります
- 圧縮: CPU時間は増えるが、全体的な継続時間は短縮される
- ストレージ速度: SSDはHDDよりも大幅に高速
- サーバー負荷: アクティビティの増加によりバックアップが遅くなる
通常の範囲: 最新のハードウェアで圧縮された 10 GB のデータベースの完全バックアップには 5 ~ 15 分かかる場合があります。
15.5 どこに保管すればよいですか SQL Server バックアップ?
ベストプラクティス: 3-2-1 ルールに従います。
- 3 あなたのデータのコピー
- 2 さまざまなストレージタイプ(例:ディスク、テープ/クラウド)
- 1 オフサイトコピー
おすすめの場所:
- 迅速な回復のためのローカルディスク
- 集中管理のためのネットワークストレージ
- 災害復旧のためのクラウド ストレージ (Azure、AWS)
15.6 .bak ファイル拡張子とは何ですか?
.bak拡張子は、 SQL Server バックアップファイル。これは慣例であり、必須ではありません。 SQL Server バックアップはどのファイル拡張子でも機能します。ただし、.bak を使用するとバックアップファイルを容易に識別できるため、業界標準の方法です。
15.7 バックアップ方法 SQL Server ネットワークドライブへ?
ネットワークドライブにバックアップするには:
- 確保 SQL Server サービスアカウントにはネットワーク共有への書き込み権限があります
- バックアップ コマンドで UNC パスを使用します。
\\ServerName\ShareName\BackupFile.bak - 自動バックアップをスケジュールする前に接続をテストする
BACKUP DATABASE AdventureWorks
TO DISK = '\\BackupServer\SQLBackups\AdventureWorks.bak'
WITH COMPRESSION, INIT;
GO
15.8 圧縮できますか SQL Server バックアップ?
はい、 SQL Server ネイティブバックアップ圧縮をサポート(Enterprise EditionまたはStandard Edition)tarティン SQL Server 圧縮により、通常、バックアップ サイズが 50 ~ 70% 削減され、I/O が削減されるためバックアップ時間も短縮されますが、CPU 使用率は増加します。
BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks.bak'
WITH COMPRESSION;
GO
16. 結論
16.1の重要なポイント
効果的な SQL Server バックアップ戦略はデータを保護し、事業継続性を確保します。以下の重要なポイントを覚えておいてください。
- バックアップの種類を理解する: リカバリ要件に基づいて適切なバックアップの種類(完全、差分、トランザクション ログ)を選択します。
- 適切な復旧モデルを選択してください: 重要なデータの完全リカバリ、開発データベースのシンプル化
- バックアップ スケジュールを実装します。 定期的なフルバックアップと差分バックアップおよびログバックアップを組み合わせることで、データ損失を最小限に抑えます。
- 復元手順をテストします。 バックアップは正常に復元できる場合にのみ価値がある
- 自動化と監視: SQL Server エージェント、メンテナンスプラン、監視ツール
- 安全なバックアップ: 機密データを暗号化し、バックアップファイルへのアクセスを制御する
- オフサイトコピーを保存する: クラウドまたはリモートストレージを使用してサイト全体の災害から保護します
- すべてを文書化します。 バックアップとリカバリの手順を明確に文書化しておく
16.2 次のステップとリソース
あなたを改善するために SQL Server バックアップの実装:
- 現在のバックアップ戦略をベストプラクティスに照らして評価する
- RTOとRPOの要件を計算する
- 非本番システムでの復元手順のテスト
- バックアップスケジュールを定期的に確認して更新する
- 自動監視とアラートを実装する
- 復元手順についてチームメンバーをトレーニングする
追加のリソース:
- Microsoft SQL Server ドキュメント: 公式のバックアップと復元のガイダンス
- SQL Server バックアップコミュニティフォーラム: 経験や解決策を共有する
- プロフェッショナル認定資格: Microsoft Certified: Azure Database Administrator Associate
16.3 推奨ツールとソリューション
さまざまなシナリオに基づいて:
中小企業:
- ネイティブ SQL Server スケジュールされたバックアップ SQL Server エージェントの仕事
- クラウド統合のためのSQLBackupAndFTP
- Azure バックアップ SQL Server
中規模企業:
- SQL Server メンテナンスプラン
- Redgate SQL Backup Proのようなサードパーティツール
- Veeamバックアップ SQL Server
大企業:
- 最大限の圧縮を実現するQuest LiteSpeed
- エンタープライズバックアップ管理のための Commvault または Veritas NetBackup
- Always On 可用性グループ 高可用性
SQL Server バックアップはデータベース管理の基本です。適切な計画、実装、そしてテストを行うことで、データの保護と、必要に応じて復旧を確実に行うことができます。tarこれらのベストプラクティスを今日から実践して、 SQL Server データベース。
著者について
袁勝 10年以上の経験を持つ上級データベース管理者(DBA)です。 SQL Server 環境およびエンタープライズデータベース管理に精通しており、金融サービス、医療、製造業など、様々な組織において数百件のデータベース復旧シナリオを解決してきました。
ユアンの専門は SQL Server データベースの復旧、高可用性ソリューション、パフォーマンス最適化など、幅広い分野に精通しています。彼は、マルチテラバイト規模のデータベースの管理、Always On可用性グループの実装、ミッションクリティカルなビジネスシステム向けの自動バックアップおよび復旧戦略の開発など、豊富な実務経験を有しています。
Yuanは、技術的な専門知識と実践的なアプローチを通じて、データベース管理者やITプロフェッショナルが複雑な問題を解決するのに役立つ包括的なガイドの作成に重点を置いています。 SQL Server 効率的に課題に取り組みます。常に最新の SQL Server リリースと Microsoft の進化するデータベース テクノロジを活用し、定期的にリカバリ シナリオをテストして、推奨事項が実際のベスト プラクティスを反映していることを確認します。
について質問があります SQL Server 回復または追加のデータベーストラブルシューティングガイダンスが必要ですか?Yuanは歓迎します フィードバックと提案 これらの技術リソースを改善するためです。











