sqlserver删除数据错误能还原吗

1.当LOG文件完成后,就可以恢复了。
但是,它通常会将数据库恢复到数据被意外删除之前的整个状态。
建议备份当前数据库。

2.SQL2008下的具体方法可以参考操作。

最常用的是LogTailBackup恢复方法。
以下环境为2008R2。
此方法适用于2008及以上版本。
其实2005年也可以用。
2000年很少使用,也没有经过测试。
(SQL2008之前,可以使用第三方工具LogExploer。

步骤:

(1)检查数据库的恢复模型,如图:

p>

或者使用脚本来检查:

SELECTrecovery_model,Recovery_model_descFROMsys.databasesWHEREname='AdventureWorks'结果如下:

确保数据库恢复模型不能至少为[简单]。
如果不是完整模式,请将其更改为完整模式。
如果修改前数据被删除,则无法恢复。

(对于主要生产数据库环境,强烈建议使用【完全恢复模型】,尽管对于其他两种(BULK_LOGGED),SIMPLE)

(2)已满足至少一次全备份的要求由于所有备份类型均以全备份为基础,因此在创建新备份后,如果没有至少一次全备份,则其他备份类型均无效。
执行全量备份的数据库。

使用以下语句大致查看哪些数据库已备份:

SELECT数据库名称、恢复模式、nameFROMmsdb.dbo.backupset

>

(3)确保其他人不再连接数据库,然后执行日志尾部备份:

首先创建几个数据:

/*这里以微软的AdventureWorks示例数据库为例*/USEAdventureWorksGOIFOBJECT_ID('testRestore')ISNOTNULLDROPTABLEtestRestoreGOCREATETABLEtestRestore(idINTIDENTITY(1,1),NAMEVARCHAR(50));--插入测试数据:INSERTINTOtestRestore(Name)SELECT'test1'UNIONALLSELECT'test2'UNIONALLSELECT'test3'UNIONALLSELECT'test4'UNIONALLSELECT'test5'UNIONALLSELECT'test6'UNIONALLSELECT'test7'UNIONALLSELECT'test8'SELECT*FROMtestRestore检查结果:

那么为了查明它何时发生,我有一个添加了waitfor命令以在特定时间点执行此操作,以便恢复正确:

USEAdventureWorksGOWAITFOTIME'21:45'DELETEFROMdbo.testRestore

现在让我们看一下数据:

USEAdventureWorksGOSELECT*FROMdbo.testRestore

《<<<<<<<<<下面是重点>〉〉〉〉〉〉〉〉》

要创建日志备份,最重要的是选择[备份日志末尾]。

然后在页面中选择【选项】:除【交易日志】外,其他位置均以红色框出强烈建议检查这一点。
并确保没有其他人连接到数据库,因为备份日志的末尾会将数据库置于恢复状态并拒绝来自其他会话的连接。
如果没有断开其他连接,则无法进行备份。

按“确定”。
您还可以使用上面的[脚本]来生成语句:

USEMasterGOBACKUPLOG[AdventureWorks]TODISK=N'E:\AdventureWorks.bak'WITHNO_TRUNCATE,NOFORMAT,NOINIT,NAME=N'AdventureWorks-事务日志备份'、SKIP、NOREWIND、NOUNLOAD、NORECOVERY、压缩、STATS=10,CHECKSUMGO声明@backupSetIdasintselect@backupSetId=positionfrommsdb..backupsetwheredatabase_name=N'AdventureWorks'andbackup_set_id=(selectmax(backup_set_id)frommsdb..backupsetwheredatabase_name=N'AdventureWorks')if@backupSetIdisnullbeginraiseerror(N'验证失败。
找不到数据库“AdventureWorks”的备份信息。
',16,1)endRESTOREVERIFYONLYFROMDISK=N'E:\AdventureWorks.bak'WITHFILE=@backupSetId,NOUNLOAD,NOREWINDGO

此时数据库处于【恢复】状态

如果发现无法进行备份,可以使用如下语句恢复spid检查并退出:

SELECT*FROMsys.sysprocessesWHEREdbid=DB_ID('AdventureWorks')执行结果如下:

然后使用杀指令杀。

然后继续备份,然后恢复,如图所示。
先恢复全量备份,选择最新的,只有最新的备份才会被识别,否则无法恢复。

还有另一条线索。
记得选择如下图:

然后恢复日志文件,这是最重要的一步:

则:

(图中数据是晚上10点20分删除的,只要指定你不小心删除之前的时间即可。
)自日志的最后备份以来这是最后一个备份文件,因此只需选择此处的红色框即可:

单击“确定”。
完成后再次查看表数据是否恢复成功。

****************************************************************************************

总结:

1.方法看似有点复杂,但实际操作并不算太难。

2.首先,无论故障的影响多么严重,都要确保现场环境的安全。
如果不是重要的生产数据,就忘记它。

3.建议严格遵循以上提示。
建议在正式操作之前先在​​测试数据库中进行练习和理解。

补充提醒:该方法的缺点是:

1如果错误恢复后有很多其他人执行了该操作,则操作数据其他人都被掏空了。
因此,在操作失败后,应该考虑停止其他人对数据库的操作。

2.该方法必须是数据库独占的。
在此过程中,其他人无法连​​接数据库。

SQLServer的文件恢复技术

SQLServer有两种备份方法。
一种是使用BACKUPDATABASE来备份数据库文件。
另一种是直接复制数据库文件mdf和日志文件ldf。
本文主要介绍后者的备份与恢复(本文假设您已经熟练使用服务器企业管理器和SQLServer查询分析器)

普通备份与恢复方法

Sp_detach_db数据库名称

Sp_attach_db或sp_attach_single_file_dbs_attach_db[@dbname=]′dbname′[@filename=]′filename_n′[]sp_attach_single_file_db[@dbname=]′dbname′[@physname=]′physical_name′

【sp_detach_db'test'

【sp_attach_db'test''C:ProgramFilesMicrosoftSQLServerMSSQLDatatest_datamdf''C:ProgramFilesMicrosoftSQLServerMSSQLDatatest_logldf'sp_attach_single_file_db'test''C:ProgramFilesMicrosoftSQLServerMSSQLDatatest_datamdf'

仅mdf文件恢复技术

usemastergosp_configure'allowupdates'goreconfigurewithoverridego

将test设置为紧急修复模式

Updatesysdatabasessetstatus=wheredbid=DB_ID('test')

G接下来,再次执行真正的恢复操作Build数据库日志文件

dbccrebuild_log('test''C:ProgramFilesMicrosoftSQLServerMSSQLDatatest_logldf')

H验证数据库一致性(可以是省略)

dbcccheckdb('test')

我将数据库设置为正常状态

sp_dboption'test''dbouseonly''false'

>lishixinzhi/Article/program/SQLServer/201311/22357

急!在线等!SQLServer2000数据库文件如何恢复?

运行SQLserver2000企业管理器并使用附加数据库功能可以解决数据库文件恢复问题。
步骤如下:1.打开企业管理器。
2.选择一个数据库。
3.右键单击​​数据库并选择“所有任务”。
4.从弹出选项中选择“附加数据库”。
5.在附加数据库MDF文件字段中,选择您的MDF文件。
6.确认信息正确后,单击“确认”按钮。
7、最后点击“确定”按钮即可完成数据库文件恢复。
通过以上步骤,可以顺利恢复SQLserver2000数据库文件,保证数据安全和业务连续性。
请注意,使用此数据库文件恢复方法时,必须确保所选的MDF文件完整且未损坏,以避免数据恢复错误。
在日常操作过程中,建议定期备份重要数据,防止数据丢失。

sqlserver数据库数据被删除了怎么还原?

在sqlserver2012的维护计划向导中需要创建完整备份、差异备份和事务日志。