SqlServer如何找回丢失的表?

前言

在日常使用SqlServer进行数据管理时,偶尔会出现意外情况,比如在操作过程中可能会误删表格,或者在数据库备份还原的过程中出现错误导致表格丢失了,此时如何找回丢失的表格呢?下面将详细介绍。

1. 确认表格是否被删除

我们首先要确认的是表格是否真的被删除了,可以通过以下简单步骤进行确认:

1.1 查询被删除的表格

在查询之前需要先打开SqlServer Management Studio,接着在打开的窗口中选择需要查询的数据库,然后依次点击“左侧栏-数据库-系统数据库-master-表”。

在新打开的 “表” 窗口中,找到“dbo.SYSOBJECTS”表,双击该表。在“dbo.SYSOBJECTS”表的新窗口中,可以在左侧栏中找到 “OBJECT_TYPE” 字段,在该字段下面可以找到被删除的表格。

如果在 “dbo.SYSOBJECTS”表中找不到被删除的表格,那么可以通过以下步骤查找:

1.2 查找回收站中的表格

SqlServer中有一个回收站功能,当我们误删除表格时,可以通过这个功能找回表格。可以通过以下步骤打开回收站:

依次点击 "左侧栏-数据库-系统数据库-master-存储过程-系统存储过程" ,然后右键点击 “sp_MSforeachtable”,选择“执行”,然后输入以下代码:

EXEC sp_MSforeachtable @command1='SELECT ''?'', COUNT(*) FROM ?'

点击“执行”按钮,输出的结果中如果看到了被删除的表格,那么就说明该表格在回收站中。接着进行如下操作:

EXEC sp_MSforeachtable @command1='ALTER TABLE ? NOCHECK CONSTRAINT ALL'

GO

EXEC sp_MSforeachtable @command1='ALTER TABLE ? DISABLE TRIGGER ALL'

GO

EXEC sp_MSforeachtable @command1='DELETE FROM ?'

GO

EXEC sp_MSforeachtable @command1='DBCC CHECKIDENT (''?'', RESEED, 0)'

GO

这段代码的意思是:先将备份一下所有表格,然后依次将表格中的数据删除,最后再将主键重置。经过以上操作,被删除的表格应该可以找回了。

2. 通过文件查找回丢失的表格

以上两种方式都无法找回被删除的表格时,可以尝试通过物理文件的方式来找回表格。

2.1 查找SQL Server的默认存储路径

在SqlServer的默认安装路径下找到你需要查找的数据库的数据文件,数据文件的后缀为 .mdf 。可以通过以下方式找到SqlServer默认安装路径:

EXEC sp_helpfile

在执行以上代码时,可能会因权限不足而执行失败,可以通过以下方式解决此问题:

依次点击“左侧栏-数据库-当前数据库”,在弹出的详细信息面板中可以找到数据库的物理文件名(一般以 .mdf 为后缀),然后将这个文件的完整路径和文件名复制,最后在Windows资源管理器中打开此文件位置。

在数据库文件的目录下,找到一个后缀为 .ndf 的文件,这是数据库的附加文件。

2.2 使用第三方工具查找

可以使用第三方工具来查找被删除的表格,比如 ApexSQL Recover 工具,这个工具可以帮助我们恢复误删除的表格。

3. 总结

无论是通过查询数据库的系统表还是借助第三方工具,找回丢失的表格都是有希望的。不过我们还是应该做好备份工作,避免误操作导致数据丢失。

数据库标签