确定 SQL Server 备份的类型

nic*_*sis 3 sql-server backup sql-server-2014

长话短说,我们在www.hostforlife.eu上有一个托管计划(顺便说一句,即使是更昂贵的套餐,服务也很糟糕,而且他们丢失了服务器上的所有文件,我们不得不恢复我们的备份,因为他们也丢失了这些文件)和 db备份我们正在开票,所以他们会为我们手动取票。

当我们移动到另一台主机(hostforlife 的计划已过期)并尝试恢复 SQL Server 2014 备份时,我们无法做到(实际上是我们的主机)。

备份没有扩展名,我们不确定它是什么类型的备份(尝试了几种方法但没有奏效)。

我们为此联系了他们的支持,但因为我们没有积极的计划,他们甚至拒绝告诉我们备份是如何进行的。

我们可以支付 3 个月的托管费用,但我不想再给这家蹩脚的公司更多的钱。

所以,我的问题是,我们如何识别备份类型来恢复它?

Cod*_*ior 5

Restore Headeronly From Disk = '...'
Run Code Online (Sandbox Code Playgroud)

只有一种 SQL Server 备份格式。如果这没有返回任何有用的信息,那么它不是 SQL Server 备份文件,可能是其他文件(我只能想象是什么;也许您必须在文本编辑器中打开它并查看前几个字符是什么)。

它将返回一个 BackupType 列:

1 = Database 
2 = Transaction log 
4 = File 
5 = Differential database 
6 = Differential file
7 = Partial 
8 = Differential partial
Run Code Online (Sandbox Code Playgroud)

这将帮助您确定需要恢复的顺序(通常是带 norecovery 的数据库,然后是带 norecovery 的差异数据库,然后是事务日志,然后是恢复)。

还有其他方法可以使用 PowerShell 和 SMO 识别文件,但这是最快的。


Sha*_*nky 5

识别备份的一个简单方法是运行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 
Run Code Online (Sandbox Code Playgroud)