SQL Server误删错误:一路收获惊心动魄(sqlserver被误删)
SQL Server数据库误删错误是一件令人阴沉的事,尤其对于一个小型企业而言,往往一旦误删除了工作重要的数据表,就会引发不可避免的巨大损失。本文经历了一个小型企业误删错误的过程,从中收获了如何维护SQL Server数据库以及恢复数据的惊心动魄故事。
公司内部为了满足公司运营需要及多款应用的限制,对SQL Server 2008 R2管理上做了许多设置,但是可能因为系统的安装不当,经典的2104出错:Windows 无法加载指定的道具或找到指定的模块。
通过诊断发现,经典的error 2104是由于服务器上的一个数据库状态为 SUSPECT。由于当时SQL Server 报告无法连接,我们尝试通过更改 MSSQL 的注册表来将 SUSPECT 状态设为 ONLINE 以对数据库进行恢复:
EXEC sp_configure 'show advanced options', 1
GO RECONFIGURE
GO EXEC sp_configure 'allow updates', 1
GO RECONFIGURE
GO UPDATE MASTER.dbo.sysdatabases SET status = 32768 WHERE name = 'DBName'
GO
但是在通过此修改后,情况反而更糟:SQL Server 能正常连接,但是提示的 SUSPEC 状态的数据库也消失了!
接下来,我们开始真正恢复任务。首先我们尝试导出误删除的数据库结构。由于服务器状态及扩展服务比较良好,使用 SSMS (SQL Server Management Studio)来备份并导出结构,以下为脚本示例:
DECLARE @sqlCommand NVARCHAR(MAX)
SET @sqlCommand='backup database dbname to disk ''dbname.bak'''
EXECUTE sp_executesql
@sqlCommand
接着我们利用RESTORE…WITH RECOVERY 命令来恢复数据库:
USE master
GO RESTORE DATABASE dbname
FROM DISK = 'dbname.bak' WITH REPLACE, RECOVERY
GO
最后,实施完恢复的操作后,我们的数据库恢复了正常状态,并且尚未发生损失。
从这段让人惊心动魄的经历中,我们懂得了任何时候都应当严格维护部署SQL Server数据库时的安装及配置,以及在不可挽回时就要即时采取恢复操作,尤其是对于不断变化的数据应当经常备份来确保数据安全。