怎么用SQL语句备份和恢复数据库

怎么用SQL语句备份和恢复数据库,第1张

1、使用SQL最简单备份,还原数据库

2、为了方便以后的使用,开始对语句进行简单的封装->存储过程。进行备份。

3、还原数据库,数据库还原后的保存位置(目录)(使用系统默认保存位置。为数据库重命名(使用数据库默认名称)不包含扩展名,如果目录已存在该名称的数据库,将会被覆盖 。

数据库可能因为硬件或软件(或两者同时)的故障变得不可用,不同的故障情况需要不同的恢复 *** 作。我们必须决定最适合业务环境的恢复方法。在数据库中恢复有3种类型或方法,即应急(crash)恢复、版本(version)恢复和前滚(rool forward)恢复。 应急恢复用于防止数据库处于不一致或不可用状态。数据库执行的事务(也称工作单元)可能被意外中断,若在作为工作单位一部分的所有更改完成和提交之前发生故障,则该数据库就会处于不一致和不可用的状态。这时,需要将该数据库转化为一致和可用的状态。

为此,需要回滚未完成的事务,并完成当发生崩溃时仍在内存中的已提交事务。如在COMMIT语句之前发生了电源故障,则在下一次重新启动并再次访问该数据库时,需要回滚到执行COMMMIT语句前的状态。回滚语句的顺序与最初执行时的顺序相反。 这种恢复技术是版本恢复的一个扩展,使用完整的数据库备份和日志相结合,可以使一个数据库或者被选择的表空间恢复到某个特定时间点。如果从备份时刻起到发生故障时的所有日志文件都可以获得的话,则可以恢复到日志上涵盖到的任意时间点。前滚恢复需要在配置中被明确激活才能生效。

方法1:

master

中执行

exec

sp_detach_db

'fj20070116',

'true'

接下来到相应的数据库文件目录下删除log文件

exec

sp_attach_db

@dbname

=

n'fj20070116',

@filename1

=

n'f:\microsoft

sql

server\mssql\data\fj20070116_datamdf'

执行结果如下(表明删除日志成功,并重建数据库日志文件):

设备激活错误。物理文件名

'f:\microsoft

sql

server\mssql\data\fj20070116_logldf'

可能有误。

已创建名为

'f:\microsoft

sql

server\mssql\data\fj20070116_logldf'

的新日志文件。

方法2:

选中要分离的数据库,先将其分离。

删除对应的日志文件。

数据库--所有任务--附加数据库--在附加数据库的d出框中选择mdf

选择是即可完成创建新的数据库日志文件。对数据库 *** 作没有任何影响。

以上两个方法生成的log文件只有504kb。

1、使数据库变为单用户模式

ALTER DATABASE 数据库名 SET SINGLE_USER

(当变成单用户的模式只能在同一个窗口执行语句)

2、修正数据库日志重新生成,此命令检查的分配,结构,逻辑完整性和所有数据库中的对象不正确。当您指定“REPAIR_ALLOW_DATA_LOSS”作为DBCC CHECKDB命令参数,该程序将检查和修正报告的不正确。但是,这些修正可能会导致一些数据丢失。

DBCC CheckDB (数据库名, REPAIR_ALLOW_DATA_LOSS)

3、使数据库变回为多用户模式

ALTER DATABASE 数据库名 SET MULTI_USER

数据库数据恢复步骤

1、通过日志恢复SQLSERVER2005数据(也可通过LogExplorer工具查找进行恢复数据)

(A)通过日志和时间点来恢复数据的前提条件:数据库的故障恢复改为非简单模式,去掉自动关闭和自动收缩两个选项,如果是简单模式:类似下面的语句 *** 作数据就不会记录到日志中:selectintotfrom[表名]采用LogExplorer工具可以在线 *** 作,通过恢复日志(指定时间点恢复)来恢复数据,必须停止数据库或者再另一个数据库恢复(前提是必须有一个完全备份和日志备份)

这时为保证数据的完整要将数据库的恢复模式改成“完整

11、这时对数据库事务日志做备份(注意,如果没做个数据库完整备份,是不能做事务日志备份的)

这时新建一个数据库zp(将以前的数据库改名),恢复数据库

这时我们看到,有两个还原的数据库备份,因为我对zp数据库备份了两次,两次的备份的数据文件都一样。这里我们选择最近时间的备份默认在数据库的设置如下:是追加到备份集里,所以会有两个备份。

同时,在”选项“里设置”不回滚“事务,

注意:通过事务日志还原数据库,必须选择"不回滚"事务

确定后:出现下面情况:

这时发现,数据库一直是”正在还原“,这时还原数据库事务日志,

12、“常规”里选择时间,(刚删除的时间)

13、“选项”里将恢复状态设置为”回滚未提交“事务

确定后,查询数据库,发现数据回来了

2、无日志的数据恢复

21新建一个同名的数据库

22再停掉sqlserver(注意不要分离数据库)

23用原数据库的数据文件覆盖掉这个新建的数据库

24再重启sqlserver

25此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)

26完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用

数据库的脚本创建一个新的数据库,并将数据导进去就行了

USEMASTER

SP_CONFIGURE'ALLOWUPDATES',1RECONFIGUREWITHOVERRIDE

UPDATESYSDATABASESSETSTATUS=32768WHERENAME='数据库名'

sp_dboption'数据库名','singleuser','true'

DBCCCHECKDB('数据库名')

updatesysdatabasessetstatus=28wherename='数据库名'

sp_configure'allowupdates',0reconfigurewithoverride

sp_dboption'数据库名','singleuser','false'

恢复数据库到之前的某个时间点,必须要有日志备份。

下面是一个使用日志的示例:

create database db1

go

alter database db1 set recovery full

go

backup database db1 to disk='db1bak' with init--首先要对数据库进行全备份,否则checkpoint会阶段inactive的日志(类似于simple recovery)

go

use db1

go

create table t(col int)

go

---一些数据库 *** 作

---一些数据库 *** 作

---一些数据库 *** 作

--假设你在15点15分以后删除了这个表

drop table t

--如果想恢复这个表,需要对数据库进行日志备份

use master

go

backup log db1 to disk='db1trn' with norecovery

go

---然后执行以下 *** 作

use master

go

restore database db1 from disk='db1bak' with norecovery

go

restore log db1 from disk='db1trn' with recovery,stopat='2009-03-08 15:15:00'--这时,数据库恢复到15:15的状态。

以上就是关于怎么用SQL语句备份和恢复数据库全部的内容,包括:怎么用SQL语句备份和恢复数据库、数据库恢复的数据库恢复的三种方式、sql server数据库被删除怎么恢复等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存