web-dev-qa-db-ja.com

SQL Serverバックアップのタイプを特定する

要するに、私たちはwww.hostforlife.eにホスティング計画を立てていました(それより高価なパッケージでもひどいサービスであり、サーバー上のすべてのファイルを失い、バックアップを復元する必要がありました)それらも失いました)、dbバックアップの場合はチケットを開いていたので、手動で取得しました。

別のホストに移動し(hostforlifeのプランの有効期限が切れていた)、SQL Server 2014のバックアップを復元しようとしたが、実行できませんでした(実際にはホストです)。

バックアップには拡張子がなかったため、どのタイプのバックアップであるかは不明です(いくつかの方法が試されましたが、機能しませんでした)。

私たちはこれについて彼らのサポートに連絡しましたが、私たちにはアクティブな計画がなかったので、バックアップがどのように取られたのかさえ教えてくれませんでした。

3か月分のホスティング料金を支払うこともできますが、この安っぽい会社にこれ以上お金を払いたくありません。

それで、私の質問は、それを復元するためのバックアップの種類をどのように特定できるでしょうか?

3
nickpapoutsis
Restore Headeronly From Disk = '...'

SQL Serverのバックアップ形式は1つだけです。これで何も返されない場合は、SQL Serverバックアップファイルではなく、別の可能性があります(私は何を想像するだけです。おそらく、テキストエディターで開いて最初の数文字を確認する必要があります)。

BackupType列が返されます。

1 = Database 
2 = Transaction log 
4 = File 
5 = Differential database 
6 = Differential file
7 = Partial 
8 = Differential partial

これは、復元する必要がある順序を決定するのに役立ちます(通常、回復なしのデータベース、回復なしの差分データベース、トランザクションログ、回復あり)。

PowerShellとSMOを使用してファイルを識別する方法は他にもありますが、これが最も簡単です。

5
Cody Konior

バックアップを特定する簡単な方法は、 restore headeronly コマンドを実行することです。 RESTORE HEADERONLY FROM DISK = 'D:\Backup\backupfil.bak' ;のように

出力を見て、列backup typeを見てください。以下はタイプと対応するバックアップです

バックアップの種類:

1 =データベース

2 =トランザクションログ

4 =ファイル

5 =差分データベース

6 =差分ファイル

7 =部分的

8 =差分部分。

SQL Serverにアクセスでき、SQL Serverカタログにアクセスする権限がある場合は、クエリの下で実行して、Last 7 daysのバックアップ情報を取得できます。 これはクエリソースです 、クエリを少し変更しました

SELECT 
CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server, 
msdb.dbo.backupset.database_name, 
msdb.dbo.backupset.backup_start_date, 
msdb.dbo.backupset.backup_finish_date, 
msdb.dbo.backupset.expiration_date, 
CASE msdb..backupset.type 
WHEN 'D' THEN 'Database' 
WHEN 'L' THEN 'Log' 
WHEN 'i'  THEN 'DIFFERNTIAL'
END AS backup_type, 
msdb.dbo.backupset.backup_size, 
msdb.dbo.backupmediafamily.logical_device_name, 
msdb.dbo.backupmediafamily.physical_device_name, 
msdb.dbo.backupset.name AS backupset_name, 
msdb.dbo.backupset.description 
FROM msdb.dbo.backupmediafamily 
INNER JOIN msdb.dbo.backupset ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id 
WHERE (CONVERT(datetime, msdb.dbo.backupset.backup_start_date, 102) >= GETDATE() - 7) 
ORDER BY 
msdb.dbo.backupset.database_name, 
msdb.dbo.backupset.backup_finish_date 
4
Shanky