如何在SQL Server中恢复数据

如何在SQL Server中恢复数据,第1张

在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

数据库恢复的三种方式

数据库可能因为硬件或软件(或两者同时)的故障变得不可用,不同的故障情况需要不同的恢复 *** 作。我们必须决定最适合业务环境的恢复方法。在数据库中恢复有3种类型或方法,即应急(crash)恢复、版本(version)恢复和前滚(rool forward)恢复。

应急恢复

应急恢复用于防止数据库处于不一致或不可用状态。数据库执行的事务(也称工作单元)可能被意外中断,若在作为工作单位一部分的所有更改完成和提交之前发生故障,则该数据库就会处于不一致和不可用的状态。这时,需要将该数据库转化为一致和可用的状态。

为此,需要回滚未完成的事务,并完成当发生崩溃时仍在内存中的已提交事务。如在COMMIT语句之前发生了电源故障,则在下一次重新启动并再次访问该数据库时,需要回滚到执行COMMMIT语句前的状态。回滚语句的顺序与最初执行时的顺序相反。

版本恢复

版本恢复指的是使用备份 *** 作期间创建的映象来复原数据库的先前版本。这种恢复是通过使用一个以前建立的数据库备份恢复出一个完整的数据库。一个数据库的备份允许你把数据库恢复至和这个数据库在备份时完全一样的状态。而从备份建立后到日志文件中最后记录的所有工作事务单位将全部丢失。

前滚恢复

这种恢复技术是版本恢复的一个扩展,使用完整的数据库备份和日志相结合,可以使一个数据库或者被选择的表空间恢复到某个特定时间点。如果从备份时刻起到发生故障时的所有日志文件都可以获得的话,则可以恢复到日志上涵盖到的任意时间点。前滚恢复需要在配置中被明确激活才能生效。

问题1:在没有备份的情况下,卸载了软件,但是账套数据文件存在,如何恢复数据?

引子:通常情况下,应该提醒用户经常在系统管理中进行账套备份。如果在没有备份的情况下,卸载了软件(或重装了系统),这时软件是安装在其他盘上,比如D盘。

若这两个文件存在的话,可以通过以下方法把数据恢复。

解决方法:

(1)、把zt991文件夹备份好,卸载干净后,重新安装软件;

(2)、在“系统管理”创建991账套,启用年份及行业性质都与原账套相同。如果原来账套是多个年度的,则一定要建立年度账(比如001账套是2006年启用的,则要新建一个001账套,启用年份是2006年,并且要建立2007年和2008年的年度账)。这样在软件安装目录下会形成一个文件夹zt991。

(3)、将sqlserver服务关闭(可在任务栏中使用“sqlserver服务管理器”进行服务停止,或在控制面板--管理工具--服务中将mssqlserver服务停用)

(4)、将已经备份出去的zt991文件夹覆盖新的zt991文件夹。

(5)、重新启动sqlserver服务和U6的服务,然后登录U6应用程序,即可看到原账套中的信息,确认信息无误后,及时进行数据备份。

问题2:在系统管理中进行了账套备份,但是恢复账套的时候,提示“备份信息文件无效,恢复失败”。

引子:在系统管理中进行账套备份,形成两个文件:uferpactlst(通uf2kactlst)和ufdataba_。所以当出现这个提示的时候,先对这两个文件进行 *** 作。首先检查ufdataba_是否可以解压缩,如果解压缩失败,说明物理文件破坏,这时备份文件无效了(这时就要考虑用问题1中的方法来解决了)。如果解压缩成功,可以用以下两个方法来 *** 作。

解决方法一:还原数据

(1)、用产品自带的解压工具把ufdataba_文件解压。解压工具D:\U6SOFT\Admin\ ufuncompexe。双击这个文件,选择源文件,录入解压文件,把ufdataba_解压成ufdatabak,点击“解压缩”按钮。

(2)、在系统管理中新建一个账套,假定账套号是001。

(3)、在sql server 的企业管理器中,逐层展开树形结构,鼠标右键点击“数据库”,选择“所有任务”—“还原数据库”

(4)、进入“还原数据库”界面,从下拉列表中选择“还原为数据库ufdata_001_2008,“从设备”还原,然后点击“选择设备”。

(5)、进入“选择还原设备”,点击“添加”按钮,进入“选择还原目的”界面,点击“文件名”后的浏览按钮,选择ufdatabak文件所在的路径。然后点击“确定”按钮。

(6)、再点击“确定”按钮,又一次进入“还原数据库”界面,在“选项”页签下,选择“在现有数据库上强制还原”。

一定要注意逻辑文件名对应的“移至物理文件名”对应的路径是否正确。点击“确定”就可以了。

注:这样方法也适用于只有ufdataba_文件的情况下恢复数据,以及只对年度账数据进行恢复的情况。

解决方法二:把现有运行正常的账套进行备份,然后用记事本的方式打开uferpactlst文件,同时也打开恢复失败的账套的uferpactlst文件,参照自己备份出来的账套的uferpactlst文件,修改恢复失败的账套的uferpactlst文件,除了保留账套号外,其余不一致的地方都要修改。

打开mysql的bin log功能:

对于mysql也是支持增量备份,但要打开mysql的bin log功能。

我们修改mysql的配置文件。linux是/etc/mycnf,windows是mysql的安装目录/myini

我们在[mysqld]下面加上log-bin一行代码,如下面。

[mysqld]

log-bin=mysql-bin

复制代码

加完后重起mysql即可。

某客户更新数据的时候,误删了数据库的内容,因为数据库做了主从,但是没有做备份(备份很重要啊!)幸好开启了bin-log,之后只好把整个日志的记录拿回来本地进行恢复。

之后自己也做了一个简单的测试,对数据进行恢复,具体如下:

1、新建一个表

CREATE TABLE `lynn``sn_test` ( `name` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL , `age` INT( 3 ) NOT NULL ) ENGINE = MYISAM;

2、插入多条数据

INSERT INTO `lynn``sn_test` (`name`, `age`) VALUES ('lynn1', '1');

INSERT INTO `lynn``sn_test` (`name`, `age`) VALUES ('lynn2', '2');

INSERT INTO `lynn``sn_test` (`name`, `age`) VALUES ('lynn3', '3');

INSERT INTO `lynn``sn_test` (`name`, `age`) VALUES ('lynn4', '4');

3、查看数据并删除

mysql> select from sn_test;

+-------+-----+

| name | age |

+---------+---+

| lynn1 | 1 |

| lynn2 | 2 |

| lynn3 | 3 |

| lynn4 | 4 |

+---------+-----+

4 rows in set (000 sec)

mysql> delete from sn_test;

Query OK, 4 rows affected (000 sec)

mysql> select from sn_test;

Empty set (000 sec)

4、mysqlbinlog恢复数据

mysqlbinlog mysql-bin000006 > 1sql

查看1txt里面数据插入的纪录,把删除之前的数据进行恢复

mysqlbinlog mysql-bin000006 --start-position=2471 --stop-position=2876 | mysql -uroot -p123

重新登录,查看数据,OK,已经成功恢复了

对于数据库 *** 作,应该注意如下问题:

1、要常备份(全备,增量备份),出了问题可以最快恢复数据;

2、 *** 作数据库前,要把需要 *** 作的数据库或者表dump出来;

3、需要把bin-log打开,就算没有做上面的两步,也可以通过日志恢复数据

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然后就完成数据的恢复数据的 *** 作如下。

数据库删除了数据是一个很棘手的问题,数据的删除首先包括三个层面:

1删除放入回收站,没有在回收站中清除数据。这种情况是最简单的,进入回收站,找到删除的数据,右击选择恢复。

2删除后未放入回收站或者删除后清空回收站,尽量先不要往原数据所在盘符下储存内容,刚刚删除的数据只是文件结构被删除,真正的文件数据还没被覆盖。通过数据恢复软件是可以找回来的,专业的软件例如有超级兔子数据恢复软件

3如果是删除很久以后才想到数据库数据要恢复,并且磁盘一直在使用,磁盘被填满的话数据就已经被覆盖了,这样的数据是无法找回的。

以上就是关于如何在SQL Server中恢复数据全部的内容,包括:如何在SQL Server中恢复数据、数据库恢复可以用哪些方法实现、如何数据恢复等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10156310.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存