SQL Server-有没有办法在没有备份的情况下恢复损坏的数据库?

时间:2018-10-16 07:21:13

标签: sql sql-server

我正在为自己的实践模拟数据库损坏。 我所做的是编辑Running 'npm install' in C:\Users\pc\demoapp > demoapp@0.0.0 postinstall C:\Users\pc\demoapp > webdriver-manager update --gecko false [09:55:46] I/config_source - curl -oC:\Users\pc\demoapp\node_modules\protractor\node_modules\webdriver-manager\selenium\standalone-response.xml https://selenium-release.storage.googleapis.com/ [09:55:46] I/config_source - curl -oC:\Users\pc\demoapp\node_modules\protractor\node_modules\webdriver-manager\selenium\chrome-response.xml https://chromedriver.storage.googleapis.com/ events.js:183 throw er; // Unhandled 'error' event ^ Error: read ECONNRESET at TLSWrap.onread (net.js:622:25) npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! demoapp@0.0.0 postinstall: `webdriver-manager update --gecko false` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the demoapp@0.0.0 postinstall script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\pc\AppData\Roaming\npm-cache\_logs\2018-10-16T06_55_48_437Z-debug.log 文件并将其弄乱,当我运行SQL Server时,数据库处于.LDF模式,这意味着它已损坏。

没有任何要还原的备份,或者没有替换备份"Recovery Pending"文件,有什么方法可以恢复数据库?

注意:我对使用任何第三方工具/软件不感兴趣。

希望您提出任何建议。

2 个答案:

答案 0 :(得分:2)

尝试在 master 数据库上使用这些命令。它将重置数据库的状态,以便您可以使用它。这会将其置于“单用户模式”和“回滚”挂起的更改中。修复后,它将允许MULTIUSER AGAIN。

EXEC sp_resetstatus 'yourDBname';
ALTER DATABASE yourDBname SET EMERGENCY
DBCC checkdb('yourDBname')
ALTER DATABASE yourDBname SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DBCC CheckDB ('yourDBname', REPAIR_ALLOW_DATA_LOSS)
ALTER DATABASE yourDBname SET MULTI_USER

答案 1 :(得分:1)

您也可以不使用.ldf文件(因为损坏甚至根本没有.ldf文件)使数据库恢复联机状态。 根据您的问题,我假设您在破坏日志之前先关闭了clead数据库(如果没有其他方法,请根据需要在评论中添加更新请求)。要检查它是否运行:

SELECT [name], [state_desc], [is_cleanly_shutdown] FROM sys.databases;

然后如果[is_cleanly_shutdown] = 1并且您的数据库只有一个日志文件(多数情况就是这样):

CREATE DATABASE [Your_DB_Name] ON
(FILENAME = N'D:\full_file_path\db.mdf')
FOR ATTACH; 

如果您有多个日志文件,请运行:

CREATE DATABASE [DB_Name] ON
(FILENAME = N'D:\full_file_path\db.mdf')
FOR ATTACH_REBUILD_LOG;

在两种情况下,您都将创建一个新的日志文件(只是单个日志文件),大小仅为0.5MB,因此您必须根据需要对其进行修改:

ALTER DATABASE [Your_DB_Name] MODIFY FILE
(
 NAME = N'DB_Name_log'
,SIZE = 100 {KB | MB | GB | TB | UNLIMITED }
,FILEGROWTH = 20 {KB | MB | GB | TB | % })
);