在以下情况下,可能需要执行SQL数据库修复操作:
- 修复标记为可疑或卡在恢复挂起状态的数据库,使您无法访问数据库文件。
- 修复由于服务器崩溃、I/O子系统故障、软件错误、病毒/恶意软件入侵等事件而损坏的数据库。
- 如果您收到诸如824、8992、5172等SQL错误。
- 如果您有损坏的日志文件,导致数据库无法访问。
通常,任何数据库管理员或SQL用户都有备份和恢复策略。但是,你可以恢复SQL数据库仅当备份运行正常时才从备份中获取。此外,您必须恢复到最近的备份,以避免数据丢失。但是,如果备份中存在任何损坏或未更新,则需要修复它。
现在,让我们一步一步详细讨论如何修复SQL Server 2016数据库。
一步步修复SQL Server数据库
通过SSMS修复SQL数据库的步骤
你可以使用DBCC CHECKDB修复数据库使用' REPAIR_ALLOW_DATA_LOSS '命令在SQL Server Management Studio (SSMS)中执行以下步骤:
步骤1:地对地导弹发射。使用Windows身份验证或SQL Server身份验证连接SQL Server 2016实例。
步骤2:从工具栏单击New Query选项卡。在打开的查询窗口中,按如下顺序复制粘贴如下命令:
EXEC sp_resetstatus [DB_Name]
设置数据库的紧急状态
DBCC CHECKDB
设置SINGLE_USER为立即回滚
检查DBCC数据库(' DB_Name ', REPAIR_ALLOW_DATA_LOSS)与no_infosgs
ALTER DATABASE[数据库名]SET MULTI_USER
注意:执行REPAIR_ALLOW_DATA_LOSS命令会导致数据丢失。如果DBCC CHECKDB不工作或防止数据丢失,使用SQL修复工具可能会有所帮助。
步骤3:撞到“执行”按钮,开始修复数据库。
数据库将得到修复,并将打开没有任何错误。
步骤修复SQL数据库使用恒星修复MS SQL
一个先进的SQL修复工具mvp和dba推荐的恒星修复MS SQL帮助修复严重损坏的数据库文件(MDF/NDF)在几个简单的步骤。此外,它还有助于恢复所有数据库对象以及删除的记录。
如何使用SQL恢复软件修复SQL Server 2016数据库
步骤1:启动软件。阅读软件主界面提示后,单击好吧。
步骤2:在“选择数据库”屏幕上,浏览然后选择要修复的数据库主文件(.mdf)。或者,单击搜索如果MDF文件的位置未知,则查找该文件。
注意:如果您希望恢复已删除的记录,请确保“包括已删除的记录”复选框被选中。

步骤3:选择MDF文件后,单击修复开始修复过程。

步骤4:选择合适的扫描方式修复MDF文件。选择标准的扫描选项快速扫描文件以查找损坏错误。要彻底扫描文件,您可以选择先进的扫描。点击好吧继续。

步骤5:单击好吧按钮一次。修复完成的弹出消息框。

步骤6:预览所有修复的文件数据。然后,单击要保存的所有或特定对象保存按钮下文件。

第七步:该软件提供不同的选项来保存修复后的数据库:
- 选择保存修复后文件的文件格式(MDF/CSV/HTML/XLS)。
- 在选择MDF文件保存格式时,您可以选择将数据库保存为New或Live db。此外,输入连接到SQL Server实例的详细信息。
- 指定要保存修复db的位置。

第八步:点击保存。成功完成文件保存过程后,将出现以下屏幕。

修复后的数据库将以相同的名称保存,但在指定位置带有“已修复”前缀。
结论
在本文中,我们讨论了可能需要修复SQL数据库的常见实例。在尝试运行修复操作之前,必须首先尝试还原已更新的备份。但是,如果备份已损坏或过时,请执行本文中讨论的步骤来解决问题。您可以使用推荐的修复选项(通常是REPAIR_ALLOW_DATA_LOSS)运行DBCC CHECKDB来执行修复过程。然而,它涉及数据丢失的风险。作为替代方案,使用Stellar Repair for MS SQL来修复可能阻止您访问数据库的常见损坏错误。
常见问题
Q。我的数据库日志文件已损坏,使数据库无法使用。我需要重建数据库。为此,我执行了以下命令:
alter database DB1 SET single_user with immediate rollback
随后,我运行了以下命令:
使用主
dbcc checkdb (DB1, REPAIR_ALLOW_DATA_LOSS)
执行这个查询给了我一个错误消息:
924号电话,第1州14层,2号线。数据库'DB1'已经打开,并且一次只能有一个用户
经过研究,我发现需要先在EMERGENCY模式下建立数据库,然后在SINGLE_USER模式下建立数据库。接下来我该做什么?
一个。尝试将数据库恢复到MULTI_USER模式,然后运行以下命令:
alter database DB1 SET single_user with rollback immediate
dbcc checkdb (DB1, REPAIR_ALLOW_DATA_LOSS)
在您尝试连接数据库之前,可能有其他进程正在使用该数据库连接。同时运行上述命令可以帮助您获得这种连接。