nic*_*sis 3 sql-server backup sql-server-2014
长话短说,我们在www.hostforlife.eu上有一个托管计划(顺便说一句,即使是更昂贵的套餐,服务也很糟糕,而且他们丢失了服务器上的所有文件,我们不得不恢复我们的备份,因为他们也丢失了这些文件)和 db备份我们正在开票,所以他们会为我们手动取票。
当我们移动到另一台主机(hostforlife 的计划已过期)并尝试恢复 SQL Server 2014 备份时,我们无法做到(实际上是我们的主机)。
备份没有扩展名,我们不确定它是什么类型的备份(尝试了几种方法但没有奏效)。
我们为此联系了他们的支持,但因为我们没有积极的计划,他们甚至拒绝告诉我们备份是如何进行的。
我们可以支付 3 个月的托管费用,但我不想再给这家蹩脚的公司更多的钱。
所以,我的问题是,我们如何识别备份类型来恢复它?
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 识别文件,但这是最快的。
识别备份的一个简单方法是运行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)