当您的SQL Server MDF数据库损坏时,您可以使用以下方法恢复其中的数据,以减少损失:
注意:在执行任何数据恢复操作之前,请先备份损坏的MDF和万博ManBetX手机下载NDF数据库文件。
- 首先,您可以尝试SQL Server内置命令DBCC CHECKDB恢复数据库。假设损坏的数据库文件是MyDatabase。Mdf ',然后您可以执行以下操作来恢复其中的数据:
- 重新启动SQL Server。
- 请勿执行任何操作。
- 在SQL Server Management Studio中执行以下SQL语句:
使用master declare @databasename varchar(255) set @databasename='MyDatabase '。mdf' exec sp_dboption @databasename, N'single', N'true'——设置目标数据库为单用户模式dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS) dbcc checkdb(@databasename,REPAIR_REBUILD) exec sp_dboption @databasename, N'single', N'false'——设置目标数据库为多用户模式
该声明
dbcc checkdb (@databasename REPAIR_ALLOW_DATA_LOSS)
在执行修复操作时,可能会导致数据库中的某些数据丢失。
而语句
dbcc checkdb (@databasename REPAIR_REBUILD)
在修复操作过程中不会造成任何数据丢失,但耗时较长。
所以如果你不是紧急的,你可以先尝试执行第二个dbcc checkdb语句,如果该语句不能帮助恢复数据库,那么你可以执行第一个和第二个dbcc checkdb命令。
修复操作完成后,您可以拨打电话
dbcc checkdb(“MyDatabase.mdf”)
再次查看数据库是否固定。
关于dbcc checkdb命令的更多详细信息可以在https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checkdb-transact-sql?view=sql-server-ver15
- 如果在使用方法1之后,dbcc checkdb仍然报告一些表错误,您可以尝试SQL Server内置命令dbcc CHECKTABLE来恢复数据库中的这些表。假设损坏的数据库文件是MyDatabase。mdf ',你要修复的表是' MyTable ',然后你可以按照以下步骤修复它:
- 重新启动SQL Server。
- 请勿执行任何操作。
- 在SQL Server Management Studio中执行以下SQL语句:
使用MyDatabase。mdf声明@dbname varchar(255) set @dbname='MyDatabase。mdf' exec sp_dboption @dbname,'单用户','true' dbcc checktable('MyTable',REPAIR_ALLOW_DATA_LOSS) dbcc checktable('MyTable',REPAIR_REBUILD) exec sp_dboption @dbname,'单用户','false'
该声明
dbcc checktable (MyTable, REPAIR_ALLOW_DATA_LOSS)
在执行修复操作时,可能会导致表中的某些数据丢失。
而语句
dbcc checktable (MyTable, REPAIR_REBUILD)
在修复操作过程中不会造成任何数据丢失,但耗时较长。
所以如果你不是紧急的,你可以先尝试执行第二个dbcc检查表语句,如果该语句不能帮助恢复数据库,那么你可以执行第一个和第二个dbcc检查表命令。
在完成所有损坏表的修复操作后,可以调用
dbcc checkdb(“MyDatabase.mdf”)
再次检查数据库中的表是否固定。
关于dbcc checktable命令的更多详细信息可以在https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checktable-transact-sql?view=sql-server-ver15
- 如果方法1和2仍然不能修复损坏的数据库或表,或者如果这些方法不能恢复您想要的数据,那么您可以使用DataNumen SQL恢复从MDF数据库中恢复数据。