`
wsql
  • 浏览: 11777395 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

第一章、关于SQL Server数据库的备份和还原(sp_addumpdevice、backup、Restore)

 
阅读更多

sql server数据库中,备份和还原都只能在服务器上进行,备份的数据文件在服务器上,还原的数据文件也只能在服务器上,当在非服务器的机器上启动sql server客户端的时候,也可以通过该客户端来备份和还原数据库,但是这种操作实质是在服务器上进行的,备份的数据文件在服务器上,还原的数据文件也只能在服务器上,这个原则不会变,只是使用了客户端的一个工具来操作这个过程而已。

1.1、备份数据库

备份数据库有两种方式:

第一种是在企业管理器中,利用工具对数据库进行备份,这种备份的文件只会有一个,即以.bak结尾的文件。这种方式下对一个数据库进行备份的时候,可以任意的命名备份文件和后缀,还可以对已备份完成的备份文件进行名字和后缀名的修改,都不会影响文件的恢复,但是备份文件内部已经记录了原来的数据库的.mdf.ldf文件的名字和存储的路径。备份的时候,如果目标文件夹中已经存在了与备份文件名同名的文件,则有两个选项,附加和覆盖,一般选择覆盖.建议:以原数据库名字为备份文件的文件名字,并且以 .bak作为后缀名.

第二种方式是直接找数据库的data文件夹,直接将.mdf.ldf文件拷贝保存。

1.2、还原数据库

还原数据库有两种方式:

第一种是还原.bak文件,当确定了备份的数据库之后,就可以利用企业管理器来还原了。还原的新数据库名可以是任意的,在option选项里面可以根据当前机器中安装Sql Server 2005 的路径来修改路径,甚至可以修改.mdf.ldf文件的名字,名字只是标识符,任意修改都可以,编译器会把.mdf.ldf文件与新数据库名联系起来的。这样还原后,就生成了.mdf.ldf文件,原来的备份数据文件就可以删除了。还原的时候,如果目标文件夹中已经存在了与还原文件名同名的文件,可以选择覆盖原来的数据文件。建议:还原后还是以原数据库名为还原数据库名,option选项里面不要改名字,只有在有必要的时候修改路径即可.

第二种是还原.mdf.ldf文件,还原的时候可以用Attach来把.mdf.ldf文件附加上,然后命名新的数据库名,但是这两个文件是不能被删除的,否则就失去了数据源了。建议:把.mdf.ldf文件放到Data文件夹中.还原的数据库名字与原来的数据库名字相同.

1.3、与数据库备份和还原相关的两个重要的文件夹:

……\Microsoft SQL Server\MSSQL.1\MSSQL\Backup

-------存放备份的数据文件

……\Microsoft SQL Server\MSSQL.1\MSSQL\Data

--------存放.mdf.ldf文件

1.4、通过sql server的命令来备份还原数据库

我们通常备份数据库时,需要通过sql server客户端登录数据库服务器去备份和恢复,这样很不方便,其实SQL SERVER自带的命令就可以备份和还原数据库。这些命令可以在sql server客户端的sql脚本窗口直接执行,也可以很通过ADO.Net调用这些命令实现远程备份和恢复数据库。

1)、备份还原数据库的命令

备份:

BACKUP DATABASE'被备份的数据库名'TO DISK = '备份文件路径';

--注意:被备份的数据库名必须是存在的,否则会出错

还原:

--将数据库置于离线状态

ALTER DATABASE'被恢复的数据库名'SET OFFLINE WITH ROlLBACK IMMEDIATE;

--恢复数据库

RESTORE DATABASE '被恢复的数据库名'FROM DISK = '还原文件路径(源文件)';

--将数据库置于在线状态

ALTER DATABASE'被恢复的数据库名'SET ONLINE WITH ROlLBACK IMMEDIATE;

--注意:被恢复的数据库名必须是存在的,并且该数据库将会被覆盖掉,还原文件路径(源文件)必须是存在的,另外,在执行前后的两个ALTER语句的时候,所选择的数据库必须是master

有时候为了保险起见,ALTER语句可以不要。

2)、命令应用

A、可以直接在sql server客户端的sql窗体中执行命令。

B、可以在数据库上写存储过程,然后配置JOB,定期调用这个存储过程。

C、通过应用程序的ADO.NET来执行这些命令或者命令组成的存储过程,实现应用程序控制备份还原数据库,这些应用程序可以写成服务,定期调用。

3)、C#案例

//备份数据库

string sql = "backup database qis2006 to disk = '" + Server.MapPath("").ToString() +"\\"

+ bakname+ System.DateTime.Now.DayOfYear.ToString() + System.DateTime.Now.Millisecond.ToString() +".bak'";//备份文件名

Access acc = new Access();

acc.ExecuteNoneQuery(sql);

//还原数据库

string sql = "Alter Database qis2006 Set Offline with Rollback immediate;";

sql += "restore database qis2006 from disk = '" ;

sql += Server.MapPath("").ToString() +"\\";

sql += bakname + "'"; //bakname 是备份文件名

sql += "Alter Database qis2006 Set OnLine With rollback Immediate;";

try

{

//连接 master数据库 ;

//执行 sql 语句;

Response.Write("<script language=javascript>alert('数据恢复成功!');</script>");

}

catch(Exception ex)

{

Response.Write("<script language=javascript>alert('数据恢复失败!');</script>");

this.Label2.Text = ex.ToString();

}

4)、存储过程案例

//备份数据库

create proc backup_database

(

@device_name varchar(80),--备份设备名

@file_name varchar(125),--备份文件名

@devicelog_name varchar(85),--日志备份设备名

@filelog_name varchar(130)--日志备份文件名

)

as

begin

--创建数据库的备份逻辑设备

exec sp_addumpdevice 'disk', @device_name,@file_name

--创建设备逻辑名

exec sp_addumpdevice 'disk', @devicelog_name, @filelog_name

backup database testdb to @device_name --备份数据库

backup log testdb to @devicelog_name --备份日志

end

//还原数据库

create proc restore_database

(

@device_name varchar(80),

@devicelog_name varchar(85)

)

as

begin

Restore database testdb from @device_name

Restore log testdb @devicelog_name

end

2008-06-23

分享到:
评论

相关推荐

    sql.rar_BACKUP SQL Server_drop_exec sql database

    3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice disk , testBack , c:\mssql7backup\MyNwind_1.dat --- 开始 备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 ...

    经典SQL语句大全 一些应用

    3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始 备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表...

    sql.rar_C# SQL 创建表_c# sql table_drop

    创建数据库CREATE DATABASE database-name 2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice disk , testBack , c:\mssql7backup\MyNwind...

    Sql Server 2000删除数据库备份文件

    代码如下:/************************* Sql Server 2000 如何删除数据库备份 **************************/ –可以先备份数据库[TestDB] BACKUP DATABASE TestDB TO Disk =’E:\数据库备份\TestDB_20090829.bak’ WITH...

    系统简单修复工具(sql安装)

    大家都遇过系统出现故障的时候,例如:学习数据库知识,要用到数据库软件,于是想在自己电脑上装上一个sql,我想最初大家装的都是微软的sql2000,可是就是安装不上,蹦出一个类似之前的一个程序被挂起,请重新启动...

    SQLserver小技巧

    3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始 备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 ...

    经典SQL语句大全,基础、提升、数据开发-经典、SQL Server基本函数

    EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始 备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 ...

    sql语句大全 全部的sql

    SQL分类:  DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) ...EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'  --- 开始 备份 BACKUP DATABASE pubs TO testBack

    经典SQL命令语句大全

    3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始 备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表...

    数据库基本SQL语句.txt

    3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始 备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新...

    sqlserver总结

    一个好的数据库总结文档 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname ...EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' ---

    经典SQL语句大全

    EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始 备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2...

    SQL语句的使用

    EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1. dat' --- 开始 备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],...

    经典SQL语句大全.doc

    EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始 备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2...

    SQL命令和常用语句大全

    3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始 备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表...

    经典SQL语句

    3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始 备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表...

    数据库sql用法

    EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始 备份 BACKUPDATABASE pubs TO testBack  4、说明:创建新表 createtable tabname(col1 type1 [not null][primary ...

    经典Sql语句大全(本资源基本涵盖了sql中的经典用法)

    3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始 备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表...

Global site tag (gtag.js) - Google Analytics