码迷,mamicode.com
首页 > 数据库 > 详细

数据库的备份与还原

时间:2015-09-10 19:18:50      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:

这几天在做数据库的迁移,所以就会涉及到数据库的备份与还原,即从当前数据库中备份出数据库文件,然后将备份文件copy到新服务器并还原。

备份

备份有两种操作方式,一是通过UI操作,另一种是通过sql脚本。

1,通过UI操作方式

数据库上右键,选择Tasks\Back up...

技术分享

通过UI备份的过程中,碰到备份出来的文件很大,原因是没有压缩,所以要注意改一下这里的配置。

技术分享

2,通过sql脚本

BACKUP DATABASE HotelCacheDB TO DISK=Nd:\n.lu\dev.db.backup\HotelCacheDB_backup_2015_09_10_011507_1111111.bak WITH COMPRESSION; --注意设置 WITH COMPRESSION压缩

GO

还原

同样,还原也有两种方式,通过UI操作和通过sql脚本。

1,通过UI操作

技术分享

...

2,通过sql脚本

--1,判断原数据库是否存在,如果存在,先删除 

IF EXISTS( SELECT 1 FROM sys.databases 

WHERE name= NHotelDB) 

BEGIN 

 ALTER DATABASE HotelDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;--防止因数据库正在使用导致drop失败 

 DROP DATABASE HotelDB; 

END 

--2,还原数据库 

RESTORE DATABASE HotelDB FROM  DISK = ND:\dev.db.backup\HotelDB_backup_2015_09_10_011507_0000000.bak WITH REPLACE; 

GO

在第2步还原数据库的时候,有可能碰到因路径太长导致报错,一般错误信息如下。

Msg 5133, Level 16, State 1, Line 1

Directory lookup for the file "D:\Data\MSSQL10_50.DEV\MSSQL\DATA\HotelCacheDB.mdf" failed with the operating system error 3(The system cannot find the path specified.).

Msg 3156, Level 16, State 3, Line 1

File ‘HotelCacheDB‘ cannot be restored to ‘D:\Data\MSSQL10_50.DEV\MSSQL\DATA\HotelCacheDB.mdf‘. Use WITH MOVE to identify a valid location for the file.

Msg 5133, Level 16, State 1, Line 1

Directory lookup for the file "D:\Data\MSSQL10_50.DEV\MSSQL\DATA\HotelCacheDB_log.ldf" failed with the operating system error 3(The system cannot find the path specified.).

Msg 3156, Level 16, State 3, Line 1

File ‘HotelCacheDB_log‘ cannot be restored to ‘D:\Data\MSSQL10_50.DEV\MSSQL\DATA\HotelCacheDB_log.ldf‘. Use WITH MOVE to identify a valid location for the file.

技术分享

有两种解决方案,一是修改sql脚本,添加MOVE...TO选项

RESTORE DATABASE HotelDB FROM  DISK = ND:\dev.db.backup\HotelDB_backup_2015_09_10_011507_0000000.bak WITH  FILE = 1,  MOVE NHotelDB TO ND:\Tools\Program Files (x86)\SQL Server 2008 R2\MSSQL10_50.SZVMSJSKF012\MSSQL\DATA\HotelDB.mdf,  MOVE NHotelDB_log TO ND:\Tools\Program Files (x86)\SQL Server 2008 R2\MSSQL10_50.SZVMSJSKF012\MSSQL\DATA\HotelDB.ldf,  NOUNLOAD,  REPLACE,  STATS = 10; 

GO

另一种方案是采用UI操作的方式还原也可以。

小技巧

可以在UI操作的时候,导出sql脚本,如下图。

导出还原数据库的脚本。

技术分享

数据库的备份与还原

标签:

原文地址:http://www.cnblogs.com/mcgrady/p/4798788.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!