了解SQL Server中的数据库快照
数据库快照是一个有用的特性,它有助于执行源数据库的时间点恢复。快照捕获数据库的当前状态。因此,如果您在数据库中执行了错误操作,您可以将数据库恢复到创建快照时的状态。例如,如果在对数据库执行DML操作时创建了快照,那么使用数据库快照有助于将数据库恢复到执行DML操作之前的状态。
在SQL Server中从快照恢复SQL数据库的原因
有几个原因可能要求您从SQL Server中的快照恢复数据库。最常见的原因是,从快照将数据库恢复到特定时间点比从备份恢复要快。此外,如果发生用户错误,例如意外删除表,您可以通过从快照恢复数据库来恢复被删除的表。
在SQL Server中从快照恢复数据库
让我们讨论一个示例,演示创建数据库快照、修改数据库以及从快照恢复数据库的逐步过程。
步骤1 -创建数据库快照
下面是创建新数据库快照的Transact-SQL (T-SQL)查询。
创建数据库Test_Database_dbss (NAME = Test_Database, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.STELLAR\MSSQL\DATA\ test_databasecurcurrent .ss') 作为Test_Database的快照; 去 |
在这个查询中,' Test_Database '是我们要为其创建快照的数据库的名称。此外,' Test_Database_dbss '是快照的名称。在执行上述查询之前,请确保用数据库的名称替换数据库名称和数据库快照。
现在,让我们运行T-SQL查询,您可以在下面的屏幕中看到命令已成功执行。
刷新数据库快照文件夹。
在展开Database Snapshots文件夹时,您可以看到创建了' Test_Database '的快照。展开它,您将看到一个与原始数据库相同的表。这只是为了演示。
步骤2 -对原始数据库进行更改
现在让我们对原始数据库进行一些更改。例如,从数据库中删除一个表。这样做:
- 在SSMS中,右键单击数据库表并选择删除.
- 当提示删除SQL数据库对象时,单击好吧.
- 右键单击表并点击刷新.
表从原始数据库中删除。检查该表是否仍然存在于数据库快照中。
注意:如果在SQL Server中有多个数据库快照,请确保删除不需要的快照。这是因为一次只能恢复一个数据库快照。
步骤3 -从快照恢复数据库
下面是从数据库快照恢复数据库的语法:
从DATABASE_SNAPSHOT =yourdb_snapshot_name恢复数据库yourdb_name |
在我们的示例中,我们将从快照中恢复' Test_Database '以恢复已删除的记录。
使用主; 恢复数据库[Test_Database] from 数据库快照= 'Test_Database_dbss'; 去 |
命令执行成功,如下面的截图所示。
刷新原始数据库,您将看到已删除的表“CompanyDetails”现在已恢复。
快照依赖于源数据库。因此,如果数据库损坏,则无法从快照恢复数据库。
从快照恢复数据库的替代方案
如果无法从快照将数据库恢复到当前状态,请尝试从最近的备份恢复数据库。但是,当要从中恢复数据库的备份已经损坏时,可能会出现这种情况。您需要使用DBCC CHECKDB修复数据库,并将最小修复选项作为最后的手段。但是,使用修复选项并不能保证保持数据完整性。此外,使用' REPAIR_ALLOW_DATA_LOSS '选项会带来数据丢失的风险。
一个更好的选择是使用Stellar Toolkit for MS SQL,这是一组为dba设计的综合工具修复损坏的SQL数据库,从损坏的数据库中提取数据,重置丢失或忘记的SQL数据文件密码.
常见问题
问:我可以将数据库快照恢复到不同的位置吗?
一个。不可以,您可以将数据库快照恢复到不同的位置,因为快照与源数据库位于同一个SQL Server实例上。
我偶尔会运行DROP操作来删除不需要的数据库表。但是,我需要恢复被删除的表,因为它包含我仍然需要的数据。可以通过从快照恢复数据库来恢复表数据吗?
答:是的,您可以通过从快照恢复数据库来恢复被删除的表。
问:如何使用Stellar Toolkit for MS SQL软件恢复数据库和恢复数据?
一个。SQL工具包包括SQL修复工具和Backup Extractor工具。如果数据库变得无法访问或损坏,您可以使用SQL修复工具修复损坏并将数据库恢复到原始状态。
如果需要从备份中恢复数据库,并且数据库已损坏,可以使用工具包中的backup Extractor工具提取并恢复数据。