1. SQL Server无日志恢复数据库介绍
无日志恢复(也称为点恢复)是一种在没有完整日志文件的情况下恢复 SQL Server 数据库的方法。这种方法的前提是数据库在发生故障之前没有完全关闭,因此缓存中的信息可以被恢复。无日志恢复方法可以用于恢复严重受损但不至于无法修复的数据库,用于恢复之后的数据库状态,如备份或补丁的应用等。
2. SQL Server 无日志恢复的两种方法
2.1. 逐步操作
逐步操作是无日志恢复的一种方法,该方法适用于故障某一部分数据库,而不是整个数据库数据丢失的情况。它基于数据库的数据文件内容,并且使用一个用于避免数据丢失的恢复策略,同时使数据文件恢复到一个干净的它之前(也称为过去干净状态)。
步骤如下:
备份当前数据库。
将数据库设置为单用户模式,并停机以防止任何新的访问。
使用新的参数运行 SQL Server 实例以停用清除磁盘缓存缓存。
将数据库文件从磁盘剪切并压缩为单个存档文件。
删除数据库文件,包括主文件和所有数据文件。
通过将压缩的存档文件解压缩到SQL Server数据目录中来还原数据库文件。
启动SQL Server实例。
这种方法需要使用操作系统的文件复制命令进行恢复。这种方法不适用于缺少任何一部分数据库文件的情况或丢失了整个文件的情况。
2.2. 无日志恢复数据库 - FOR ATTACH_REBUILD_LOG
FOR ATTACH_REBUILD_LOG 是 SQL Server 在没有完整日志文件的情况下恢复数据库的方法之一。该方法可以从存在的数据文件中创建一个新的事务日志文件,并将数据库标记为“已脱机(OFFLINE)”,然后还原整个数据库,以使数据进入一个过去干净状态。 此方法需要一个尚未被备份的数据库文件。 然后将数据库连接到新的事务日志文件以将其还原为最近的完整尝试。
步骤如下:
备份当前数据库。
新建一个数据库,命名与原始数据库文件相同。
将现有的,尚未被备份的数据文件(.mdf)复制并重命名为新建的数据库名称。
使用以下 Transact-SQL 语句将数据库附加到新的日志文件上并重建事务日志:
EXEC sp_attach_db @dbname = N'new_database_name',
@filename1 = N'filepath\old_database.mdf',
@filename2 = N'filepath\new_database.ldf'
GO
使用这种方法,可以恢复整个单个数据库,包括它附加的文件。
3. 总结
无日志恢复是一种在没有完整日志文件的情况下恢复 SQL Server 数据库的方法。逐步操作和 FOR ATTACH_REBUILD_LOG 都是无日志恢复的两种方法。每种方法都有其自己的优点和缺点,并且应根据实际情况进行选择。