sql server误删除数据恢复,sql server 删除数据错误能还原吗
sql server误删除数据恢复,sql server 删除数据错误能还原吗详细介绍
本文目录一览: 如何在SQL Server中恢复数据
在SQL server 中恢复数据的几种办法 自然就是 backup 的 恢复方法 backup 这种方法是最安全 最可靠的方法操作起来也很简单 只要在 sql server 的 enterprise manager中选择 restore 就可以了 用T SQL 也可以完成 RESTORE DATABASE test FROM DISK = c:\mssql \backup\test bak 当然这是用的 文件恢复 如果是 设备恢复 自然也是可以的 可是有的时候 SQL server 是在我们毫无准备的情况下瘫痪的 有的时候是伴随者 NT 的瘫痪而引起的 (这个时候 豆腐想 墙上 Gates 的画像有仍了几个 西红柿) 怎么办呢?这个时候就只有采用 sql server 的 t sql 中提供的系统存储过程了 sp_atach_db 在这里举一个简单的例子 sp_attach_db @dbname = N pubs @filename = N c:\mssql \data\pubs mdf @filename = N c:\mssql \data\pubs_log ldf 这种方法应该说是有很高的成功率的 不过在 实践中 豆腐听说 这样后 数据库成为只读的 那也没有办法了 如果只有 mdf 没有 ldf 文件的话 可以使用 sp_attach_single_file sp_attach_single_file_db @dbname = pubs @physname = c:\mssql \data\pubs mdf 这个方法本来是 用来 对 sp_deatach 的操作的反操作 不过直接使用也还是可以成功的 lishixinzhi/Article/program/SQLServer/201311/22066
SQL Server的文件恢复技术
SQL Server有两种备份方式 一种是使用BACKUP DATABASE将数据库文件备份出去 另外一种就是直接拷贝数据库文件mdf和日志文件ldf的方式 本文中 我们将主要介绍一下后者的备份与恢复 (本文中假定您目前已经能够熟练使用Server企业管理器和SQL Server查询分析器)
正常的备份 恢复方式
正常方式下 我们要备份一个数据库 首先要先将该数据库从运行的数据服务器中断开 或者停掉整个数据库服务器 然后复制文件
卸下数据库的命令
Sp_detach_db 数据库名
连接数据库的命令
Sp_attach_db或者sp_attach_single_file_db s_attach_db [@dbname =] ′dbname′ [@filename =] ′filename_n′ [ ] sp_attach_single_file_db [@dbname =] ′dbname′ [@physname =] ′physical_name′
使用此方法可以正确恢复SQL Sever 和SQL Server 的数据库文件 要点是备份的时候一定要将mdf和ldf两个文件都备份下来 mdf文件是数据库数据文件 ldf是数据库日志文件
例子
假设数据库为test 其数据文件为test_data mdf 日志文件为test_log ldf 下面我们讨论一下如何备份 恢复该数据库
卸下数据库
sp_detach_db ’test’
连接数据库
sp_attach_db ’test’ ’C:Program FilesMicrosoft SQL ServerMSSQLDatatest_data mdf’ ’C:Program FilesMicrosoft SQL ServerMSSQLDatatest_log ldf’sp_attach_single_file_db ’test’ ’C:Program FilesMicrosoft SQL ServerMSSQLDatatest_data mdf’
只有mdf文件的恢复技术
由于种种原因 我们如果当时仅仅备份了mdf文件 那么恢复起来就是一件很麻烦的事情了
如果您的mdf文件是当前数据库产生的 那么很侥幸 也许你使用sp_attach_db或者sp_attach_single_file_db可以恢复数据库 但是会出现类似下面的提示信息
设备激活错误 物理文件名 ’C:Program FilesMicrosoft SQL ServerMSSQLdatatest_Log LDF’可能有误
已创建名为’C:Program FilesMicrosoft SQL ServerMSSQLDatatest_log LDF’的新日志文件
但是 如果您的数据库文件是从其他计算机上复制过来的 那么很不幸 也许上述办法就行不通了 你也许会得到类似下面的错误信息
服务器: 消息 级别 状态 行
未能打开新数据库 ’test’ CREATE DATABASE 将终止
设备激活错误 物理文件名 ’d:test_log LDF’ 可能有误
应该怎么办呢?下面我们举例说明恢复办法
A 我们使用默认方式建立一个供恢复使用的数据库(如test) 可以在SQL Server Enterprise Manager里面建立
B 停掉数据库服务器
C 将刚才生成的数据库的日志文件test_log ldf删除 用要恢复的数据库mdf文件覆盖刚才生成的数据库数据文件test_data mdf
D 启动数据库服务器 此时会看到数据库test的状态为“置疑” 这时候不能对此数据库进行任何操作
E 设置数据库允许直接操作系统表 此操作可以在SQL Server Enterprise Manager里面选择数据库服务器 按右键 选择“属性” 在“服务器设置”页面中将“允许对系统目录直接修改”一项选中 也可以使用如下语句来实现
use master go sp_configure ’allow updates’ go reconfigure with override go
F 设置test为紧急修复模式
update sysdatabases set status= where dbid=DB_ID(’test’)
此时可以在SQL Server Enterprise Manager里面看到该数据库处于“只读置疑脱机紧急模式”可以看到数据库里面的表 但是仅仅有系统表
G 下面执行真正的恢复操作 重建数据库日志文件
dbcc rebuild_log(’test’ ’C:Program FilesMicrosoft SQL ServerMSSQLDatatest_log ldf’)
执行过程中 如果遇到下列提示信息
服务器: 消息 级别 状态 行
未能排它地锁定数据库以执行该操作
DBCC执行完毕 如果DBCC输出了错误信息 请与系统管理员联系
说明您的其他程序正在使用该数据库 如果刚才您在F步骤中使用SQL Server Enterprise Manager打开了test库的系统表 那么退出SQL Server Enterprise Manager就可以了
正确执行完成的提示应该类似于
警告 数据库 ’test’的日志已重建 已失去事务的一致性 应运行DBCC CHECKDB以验证物理一致性 将必须重置数据库选项 并且可能需要删除多余的日志文件
DBCC执行完毕 如果DBCC输出了错误信息 请与系统管理员联系
此时打开在SQL Server Enterprise Manager里面会看到数据库的状态为“只供DBO使用” 此时可以访问数据库里面的用户表了
H 验证数据库一致性(可省略)
dbcc checkdb(’test’)
一般执行结果如下
CHECKDB发现了 个分配错误和 个一致性错误(在数据库 ’test’ 中)
DBCC执行完毕 如果DBCC输出了错误信息 请与系统管理员联系
I 设置数据库为正常状态
sp_dboption ’test’ ’dbo use only’ ’false’
假如没有出错 现在你就可以正常的使用恢复后的数据库啦
J 最后一步 我们要将步骤E中设置的“允许对系统目录直接修改”一项恢复 因为平时直接操作系统表是一件比较危险的事情 当然 我们可以在SQL Server Enterprise Manager里面恢复 也可以使用如下语句完成
lishixinzhi/Article/program/SQLServer/201311/22357
如何恢复SQLServer2000损坏的数据库文件
SQL Server2000中,如果数据库文件(非系统数据库文件)遇到错误的时候,我们该怎么办。以下是笔者以前的笔记。仅适用于非master,msdb的数据库。说明如下:1 建一个测试数据库test(数据库类型为完全)2 建一个表,插入点记录create table a(c1 varchar(2))goinsert into a values('aa')goinsert into a values('bb')go3 作完全备份,到文件test_1.bak4 在作一点修改insert into a values('cc')gocreate table b(c1 int)goinsert into b values(1)goinsert into b values(2)go5 shutdown 数据库服务器6 用ultraedit编辑数据库文件test_data.mdf,随便修改点字节内容,相当于数据库遭到致命的损坏。7 启动数据库,并且运行企业管理器,点开数据库,看到test变成灰色,而且显示置疑。8 运行isql -SLocalhost -Usa -P1> backup log test TO DISK='D:Program FilesMicrosoft SQL ServerMSSQLBACKUP est_2.bak' WITH NO_TRUNCATE2>go已处理 2 页,这些页属于数据库 'test' 的文件 'TEST_Log'(位于文件 1 上)。BACKUP LOG 操作成功地处理了 2 页,花费了 0.111 秒(0.087 MB/秒)。9 进行恢复最老的完全备份1> RESTORE DATABASE test FROM DISK='D:Program FilesMicrosoft SQL ServerMSSQLBACKUP est_1.bak' WITH NORECOVERY2> go已处理 96 页,这些页属于数据库 'test' 的文件 'TEST_Data'(位于文件 1 上)。已处理 1 页,这些页属于数据库 'test' 的文件 'TEST_Log'(位于文件 1 上)。RESTORE DATABASE 操作成功地处理了 97 页,花费了 0.107 秒(7.368 MB/秒)。10 恢复最近的日志1> RESTORE LOG test FROM DISK='D:Program FilesMicrosoft SQL ServerMSSQLBACKUP est_2.bak' WITH RECOVERY2> go已处理 2 页,这些页属于数据库 'test' 的文件 'TEST_Log'(位于文件 1 上)。RESTORE LOG 操作成功地处理了 2 页,花费了 0.056 秒(0.173 MB/秒)。数据已经完全恢复了,可以使用了。select * from ago总结,DBA应该有一个完善的数据库备份计划。本例中,如果没有一个完全备份的话,数据库的恢复就不可能 当sql server数据库崩溃时如何恢复? 任何数据库系统都无法避免崩溃的状况,即使你使用了clustered,双机热备??仍然无法完全根除系统中的单点故障,何况对于大部分用户来说,无法承受这样昂贵的硬件投资。所以,在系统崩溃的时候,如何恢复原有的宝贵数据就成为一个极其重要的问题了。在恢复的时候,最理想的情况就是你的数据文件和日志文件都完好无损了,这样只需要sp_attach_db,把数据文件附加到新的数据库上即可,或者在停机的时候把所有数据文件(一定要有master等)都copy到原有路径下也行,不过一般不推荐这样的做法,sp_attach_db比较好,虽然麻烦许多。但是呢,一般数据库崩溃的时候系统是未必能有时间把未完成的事务和脏页等写入磁盘的,这样的情况sp_attach_db就会失败。那么,寄期望于dba制定了一个良好的灾难恢复计划吧。按照你的恢复计划,还原最新的完全备份,增量备份或者事务日志备份,然后如果你的活动事务日志还能读得出来的话,恭喜你!你可以还原到崩溃前的状态。一般的单位都是没有专职的dba的,如果没有可用的备份,更可能是最近一次备份的时间过于久远而导致不可接受的数据损失,而且你的活动事务日志也处于不可用的状态,那就是最麻烦的情况了。不幸的很的是,一般数据库崩溃都是由于存储子系统引起的,而这样的情况是几乎不可能有可用的日志用于恢复的。那么就只好试一下这些方案了。当然,是要求至少你的数据文件是存在的,要是数据文件、日志文件和备份都没有了的话,别找我,你可以到楼顶上去唱“神啊,救救我吧”。首先,你可以试一下sp_attach_single_file_db,试着恢复一下你的数据文件,虽然能恢复的可能性不大,不过假如这个数据库刚好执行了一个checkpoint的话,还是有可能成功的。如果你没有好到有摸彩票的手气,最重要的数据库没有像你期盼的那样attach上去,不要气馁,还是有别的方案的。我们可以试着重新建立一个log,先把数据库设置为emergency mode,sysdatabases的status为32768 就表示数据库处于此状态。不过系统表是不能随便改的,设置一下先use mastergosp_configure 'allow updates', 1reconfigure with overridego然后update sysdatabases set status = 32768 where name = ''现在,祈求满天神佛的保佑吧,重新建立一个log文件。成功的机会还是相当大的,系统一般都会认可你新建立的日志。如果没有报告什么错误,现在就可以松一口气了。虽然数据是恢复了,可是别以为事情就算完成了,正在进行的事务肯定是丢失了,原来的数据也可能受到一些损坏。先把sql server 重新启动一下,然后检查你的数据库吧。先设置成单用户模式,然后做dbccsp_dboption '', 'single user', 'true'dbcc checkdb('')如果没有什么大问题就可以把数据库状态改回去了,记得别忘了把系统表的修改选项关掉。update sysdatabases set status = 28 where name = '' --当然你的数据库状态可能不是这个,自己改为合适的值吧。也可以用sp_resetstatusgosp_configure 'allow updates', 0reconfigure with overridegocheckdb的时候可能报告有一些错误,这些错误的数据你可能就只好丢弃了。checkdb有几种修复选项,自己看着用吧,不过最后你可能还是得用repair_allow_data_loss,完成所有修复。chekcdb并不能完成所有的修复,我们需要更进一步的修复,用dbcc checktable对每一个表做检查吧。表的列表可以用sysobjects里面得到,把objectproperty是istable的全部找出来检查一下吧,这样能够基本上解决问题了,如果还报告错误,试着把数据select into到另一张表检查一下。这些都做完了之后,把所有索引、视图、存储过程、触发器等重新建立一下。dbcc dbreindex也许可以帮你一些忙。数据库日志文件丢失时的恢复步骤,描述我误删除了数据库的事务日志文件(.ldf)之后,如何经过各种尝试恢复数据库的。但是不少网友在处理“数据库置疑”的实践过程中,又产生了许多新的疑问。我还是总结一下出现的几种情况,以供参考。2.Zach的灵验脚本Zach说他每次遇到这种数据库置疑情况,就运行下面这个脚本,屡试不爽:======================================================--before running any script, run the following to set the master database to allow updatesUSE masterGOsp_configure 'allow updates', 1GORECONFIGURE WITH OVERRIDEGO--Run the following scriptUPDATE master..sysdatabases SET status = status ^ 256 WHERE name = 'Database_Name'--Run the following scriptexec SP_resetstatus Database_Name--stop and start the MSDTC at this stage--After the procedure is created, immediately disable updates to the system tables:exec sp_configure 'allow updates', 0GORECONFIGURE WITH OVERRIDEGO=====================================从上面可以看出,处理置疑的基本步骤还是我那篇文章中说的(注意我使用的字体颜色):执行 sp_configure 以允许对系统表进行更新,然后用 RECONFIGURE WITH OVERRIDE 语句强制实施该配置;数据库重置紧急模式;执行sp_resetstatus关闭数据库的置疑标志,但是原封不动地保持数据库的其它选项(只有系统管理员才能执行)。执行该过程后,立即重启 SQL Server服务;执行 sp_configure 以禁止对系统表进行更新,然后用 RECONFIGURE WITH OVERRIDE 语句强制实施该配置。status ^ 256的意思就是:Constant Value DescriptionSQLDMODBStat_Suspect 256 Database integrity is suspect for the referenced database.不同的是,有时候丢失了数据库日志文件,额外需要以下步骤:? 把应用数据库设置为Single User模式;? 做DBCC CHECKDB;才可以。但是几位网友的实践结果就是这个DBCC CHECKDB执行失败。一位网友yang说:“但是 DBCC CHECKDB就是执行不了,总是说“该数据库处于回避恢复模式”。我已经试了很多次了,就是改变不了这个状态。”还有一位Rui执行DBCC CHECKDB时报错:“Server: Msg 943, Level 14, State 1, Line 1 Database 'his_yb' cannot be opened because its version (539) is later than the current server version (515).”对于Yang,可能他没有一步一步做,。我的切身体会是,把应用数据库设置为Single User模式后就可以做DBCC CHECKDB。之后呢,也许SQL Server重启后自动检查数据库是否正常。但是数据应该是可以读出来的,至少可以被DTS Wizard读出来的。这时候的数据库还存在问题,比如我的组件使用数据库时,报告说:“发生错误:-2147467259,未能在数据库 'XXX' 中运行 BEGIN TRANSACTION,因为该数据库处于回避恢复模式。”对于Rui,他碰到的那个错误Server: Msg 943, Level 14, State 1, Line 2Database 'XXXX' cannot be opened because its version (536) is later thanthe current server version (515).这表明Rui正试图:从一个SQL Server 2000(version 539,536之类的)的数据库备份恢复到一个SQL Server 7.0中或者把一个SQL Server 2000(version 539,536之类的)的数据库attach到一个SQL Server 7.0中,这是不允许的。如果你必须使用这个SQL Server 2000的数据备份,那么请您首先把这个备份倒入SQL Server 2000,最后用DTS把数据库从SQL Server 2000上transfer到SQL Server 7.0上。 您可能感兴趣的文章:修复断电等损坏的SQL 数据库快速修复损坏的MySQL数据库MySQL数据库INNODB表损坏修复处理过程分享mysql数据库索引损坏及修复经验分享master数据库损坏的解决办法有哪些
sql server误删了数据库怎么找回
1、打开 SQLServerManagementStudio。
2、右击要备份的数据库——任务——还原——数据库。
3、弹出还原数据库界面。选择“源设备”,点击后面对应的“?”。
4、弹出路径选择界面,点击“添加”。
5、选择要还原的数据库备份文件。点击“确定”,再点击“确定”。
6、将选好的还原集前打勾(如下图),后点击左上角的“选项”。
7、在还原选项中将“覆盖现有数据库”打勾;在恢复状态中,选择“回滚未提交的事务,使数据库处于可以使用的状态”。
SQL数据库里的表误删除要怎么恢复
1、实现运行Recovery for SQL Server操作如下。
2、点击:Next > Next--》进入 Recovery Configuration 界面--》选择了Custom才可以选择从日志中恢复误删除的数据的操作如下。
3、Next 进入 Recovery options 窗口--》选中 Search for deleted records,并选择要恢复的数据库的日志文件路径log file path操作如下。
4、实现点击next-》开始恢复操作如下。
5、点击:Next选择被恢复数据存放的目标数据库。
6、点击:Finish然后就完成数据的恢复数据的操作如下。
SQL Server如何恢复被删除的数据
可以根据数据库日志,来恢复数据,有专们的数据库恢复软件,但是数据库日志必须是没有间断的
在数据库上添加日志文件,这样就可以了
insert [表名] select * from temp2
temp2为被删除的表名
方法如下:
1、首先选择需要还原的数据库,鼠标右键,选择任务下的还原。
2、接着选择“源设备”,点击后面的文件选择“...”。
3、然后添加你需要还原的数据库,还原的数据库文件后缀为备份文件(bak)。
4、最后选中添加进来的还原文件,找到左上角上的“选择项”,勾选第一项(覆盖现有数据库),点击确定就可以了。
SQL-SERVER delete了.请问怎么恢复
SQL-SERVER delete了.请问怎么恢复
1. 如果没有提交,可以撤回
2. 如果已经提交,则看是否有备份
3. 如果有备份,那么恢复数据库到另外的地方,然后此表恢复
4. 如果没有备份,那么没有办法的。
使用log explorer等软件也不可以
另外如何清除增删改查的日志
sql server 删除数据错误能还原吗
SqlServer2000非正常删除(误删)LOG数据文件后数据库紧急修复方法,本文已一个实际例子来展示恢复过程,下文中涂改的部分均为内部内容,涂改的数据库名均表示为returndate,各位在实际恢复时则使用现场实际数据库表命名即可。
http://jingyan.baidu.com/article/454316abb2cc59f7a7c03a03.html
sql 表被drop,truncate 或者delete只要没有覆盖,均是可以恢复的,你可以参考:
sql drop table 恢复
sql delete 数据恢复
sql truncate table 恢复
SQL Server中误删除数据的恢复本来不是件难事,从事务日志恢复即可。但是,这个恢复需要有两个前提条件:
1. 至少有一个误删除之前的数据库完全备份。
2. 数据库的恢复模式(Recovery mode)是“完整(Full)”。
针对这两个前提条件,会有三种情况:
情况一、如果这两个前提条件都存在,通过SQL语句只需三步就能恢复(参考文章),无需借助第三方工具。
a) 备份当前数据库的事务日志:BACKUP LOG [数据库名] TO disk= N'备份文件名' WITH NORECOVERY
b) 恢复一个误删除之前的完全备份:RESTORE DATABASE [数据库名] FROM DISK = N'完全备份文件名' WITH NORECOVERY, REPLACE
c) 将数据库恢复至误删除之前的时间点:RESTORE LOG [数据库] FROM DISK = N'第一步的日志备份文件名' WITH STOPAT = N'误删除之前的时间点' , RECOVERY
情况二、如果第1个前提条件不存在,第2个前提条件存在,需要借助第三方工具。
情况三、如果第2个前提条件不存在,无法恢复。所以,一定要将数据库恢复模式设置为“完整(Full)”
注:只有使用delete删除的数据才支持还原
一、在LOG文件完整的情况下,可以还原。但一般而言,是将数据库的整个的状态还原到误删除数据之前。建议备份当前数据库。
二、给出SQL 2008下的具体做法,别的版本的SQL Server可参照操作。
最常用的就是日志尾部备份恢复法。以下环境2008R2,对于2008及其以上版本可以使用这个方法,其实2005也可以,2000很少用,没测试过。(SQL2008之前可以使用Log Exploer这个第三方工具。)
步骤:
(1)、检查数据库的恢复模式,如图:
或者使用脚本检查:
SELECT recovery_model,recovery_model_descFROM sys.databasesWHERE name ='AdventureWorks'结果如下:
确保数据库的恢复模式最起码不能为【简单】。如果不是完整模式,请改为完整模式,改之前如数据被删,无法恢复。
(对于重要生产数据库环境,强烈建议使用【完整恢复模式】,虽然对于另外两种(大容量日志(BULK_LOGGED)、简单(SIMPLE))来说,完整恢复模式产生的日志会大,但是在出现问题的时候,就会觉得这些都不算什么了。)
(2)、要求曾经做过最少一次的完整备份。因为所有类型的备份都基于完整备份,如果没有最少一次完整备份,其他类型的备份都无效。所以在创建完一个新数据库之后,强烈建议做一次完整备份。
使用以下的语句粗略可以看到有那些数据库做过备份:
SELECT database_name,recovery_model,name FROM msdb.dbo.backupset
(3)、确保别人不再连接数据库,然后做一次日志尾部备份:
首先先创建一点数据:
/*这里使用微软的示例数据库AdventureWorks做示例*/USE AdventureWorksGOIF OBJECT_ID('testRestore') IS NOT NULL DROP TABLE testRestoreGOCREATE TABLE testRestore ( id INT IDENTITY(1, 1) , NAME VARCHAR(50) );--插入测试数据: INSERT INTO testRestore(Name)SELECT 'test1'UNION ALL SELECT 'test2'UNION ALL SELECT 'test3'UNION ALL SELECT 'test4'UNION ALL SELECT 'test5'UNION ALL SELECT 'test6'UNION ALL SELECT 'test7'UNION ALL SELECT 'test8'SELECT * FROM testRestore检查一下结果:
然后做个删除操作,为了定位是啥时候发生的,我加了一个waitfor命令,让它在某个时间发生,这样恢复的时候就有准确性:
USE AdventureWorksGOWAITFOR TIME '21:45'DELETE FROM dbo.testRestore
现在来看看数据:
USE AdventureWorksGOSELECT * FROM dbo.testRestore
《〈〈〈〈〈〈〈〈〈下面是重点〉〉〉〉〉〉〉〉〉》
做一次日志备份,最重要是选择【备份日志尾部】
然后在【选项】页选择:除【事务日志】外,其他红框包裹的地方为强烈建议勾选的地方。并且保证数据库不要有别人在连接,因为备份日志尾部会使数据库处于还原状态,拒绝其他会话的连接,如果不断开其他连接,是备份不了的。
按确定,也可以使用上方的【脚本】来生成语句:
USE MasterGOBACKUP LOG [AdventureWorks] TO DISK = N'E:\AdventureWorks.bak' WITH NO_TRUNCATE , NOFORMAT, NOINIT, NAME = N'AdventureWorks-事务日志 备份', SKIP, NOREWIND, NOUNLOAD, NORECOVERY , COMPRESSION, STATS = 10, CHECKSUMGOdeclare @backupSetId as intselect @backupSetId = position from msdb..backupset where database_name=N'AdventureWorks' and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=N'AdventureWorks' )if @backupSetId is null begin raiserror(N'验证失败。找不到数据库“AdventureWorks”的备份信息。', 16, 1) endRESTORE VERIFYONLY FROM DISK = N'E:\AdventureWorks.bak' WITH FILE = @backupSetId, NOUNLOAD, NOREWINDGO
此时,数据库会处于【正在还原】的状态
如果发现备份不了可以用下面语句查看,并把spid杀掉:
SELECT * FROM sys.sysprocesses WHERE dbid=DB_ID('AdventureWorks')执行结果如下图:
然后用kill语句杀掉。
接着继续备份,然后进行还原,如图,先要还原完整备份,选择最近的那次,只认最后一次备份,所以要选择最新的那次,否则还原不了。
又有一个注意事项,记得如下图选择:
接着还原日志文件,这是最最重要的一步:
然后:
(图中在22:20分删除数据的,只要把时间点指定到你误删除的时间之前即可)由于日志尾部备份都是最后一个备份文件,所以这里选则红框部分即可:
点确定,完成后再检查一下表,可以看到,数据已经还原成功。
**************************************************************************
总结:
1、方法看上去有点繁琐,但是实际操作并不太难。
2、再次强调,先备份现场环境,无论故障影响有多严重,保全好当时情况。如果并不是重要生产数据,当别论。
3、步骤建议严格按照上面提示,对重要数据库实际操作前建议先在测试数据库中演练并理解后再正式操作。
额外提醒,此方法的缺点:
1、如果误操作以后还有很多人做了操作,还原后,连着别人的操作数据都会冲掉,所以发生误操作后,应考虑停止它人对数据库的操作。。
2、此方法要对数据库独占,操作过程中,它人无法使用与联接数据库。
sql server误删了数据库怎么找回
1、打开 SQL Server Management Studio。
2、右击要备份的数据库——任务——还原——数据库。
3、弹出还原数据库界面。选择“源设备”,点击后面对应的“…”。
4、弹出路径选择界面,点击“添加”。
5、选择要还原的数据库备份文件。点击“确定”,再点击“确定”。
6、将选好的还原集前打勾(如下图),后点击左上角的“选项”。
7、在还原选项中将“覆盖现有数据库”打勾;在恢复状态中,选择“回滚未提交的事务,使数据库处于可以使用的状态”。
你好:
一、还原需要的条件设置
使用命令,是通过sqlserver的事务日志以及一个误删除前的数据库的完整备份进行还原,所以在sqlserver2012的维护计划向导中,要建立完整备份,差异备份和事务日志,具体如下
以及在数据库属性,选项设置中,设置为完整备份,具体如下图
做好如上两个设置,数据库误删后找回数据就会非常轻松,现在说一下如何还原sqlserver数据到故障点。
二、还原命令
还原主要分为四步走:
1、出现故障后,首先执行备份事务日志命令,这里以AdventureWorks作为数据库名。命令如下:
BACKUP LOG AdventureWorks TO DISK = 'C:\SQLServerBackups\AdventureWorks_transcationlog.bak'
WITH NORECOVERY;
2、从完整备份还原数据
RESTORE DATABASE [QASupervision] FROM DISK='M:\Database\OA\AdventureWorks_Fullbackup_2014_03_18_010002_0155764.bak' WITH NORECOVERY, REPLACE
3、从差异备份还原数据
RESTORE DATABASE [QASupervision] FROM DISK='M:\Database\OA\AdventureWorks_diffbackup_2014_03_18_020002_0155764.bak' WITH NORECOVERY, REPLACE
4、从事务日志还原数据,还原到某个时间点之前
DECLARE @dt datetime
SELECT @dt=DATEADD(HOUR,-16,GETDATE())
select @dt
RESTORE LOG [QASupervision] FROM DISK='C:\SQLServerBackups\AdventureWorks_transcationlog.bak' WITH STOPAT=@dt,RECOVERY
5、还原数据库,如果数据库提示正在还原中,则执行此命令即可。
RESTORE DATABASE AdventureWorks WITH RECOVERY