在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

SQL Server数据库的备份和还的更多相关文章

  1. 对 sql server 数据库的备份进行加密

    原文:对 sql server 数据库的备份进行加密 嗯,最近在研究数据库备份相关的东西,考虑到应该为数据库备份加个密,就准备从网上搜索一下看看有什么好办法,没想到还挺乱... 首先,我从网上搜到的, ...

  2. SQL Server 数据库使用备份还原造成的孤立用户和对象名‘xxx’无效的错误的解决办法

    SQL Server 数据库使用备份还原造成的孤立用户和对象名‘xxx’无效的错误的解决办法 在使用数据库的过程中,经常会遇到数据库迁移或者数据迁移的问题,或者有突然的数据库损坏,这时需要从数据库的备 ...

  3. 用分离、附加的方式实现sql server数据库的备份和还原

    一.数据库分离.附加的说明 SQL Server提供了"分离/附加"数据库."备份/还原"数据库.复制数据库等多种数据库的备份和恢复方法.这里介绍一种学习中常用 ...

  4. SQL Server数据库定时备份解决方案

    SQL Server数据库定时备份解决方案 1.本方案采用软件为:SQLBackupAndFTP 10.0.3 版本,压缩包自带注册机,请自行破解. 2.软件截图如下: 3.功能说明:自动定时备份相关 ...

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

    在sql server数据库中,备份和还原都只能在服务器上进行,备份的数据文件在服务器上,还原的数据文件也只能在服务器上,当在非服务器的机器上启动sql server客户端的时候,也可以通过该客户端来 ...

  6. 数据库开发基础 SQL Server 数据库的备份、还原与分离、附加

    认识数据库备份和事务日志备份 数据库备份与日志备份是数据库维护的日常工作,备份的目的是 一.在于当数据库出现故障或者遭到破坏时可以根据备份的数据库及事务日志文件还原到最近的时间点将损失降到最低点 二. ...

  7. C#对SQL Server数据库的备份与还原

    备份数据库: string connectionString = "server=服务器名称;database=数据库名;uid=登入名;pwd=登入密码";         // ...

  8. sql server数据库自动备份

    SqlServer 数据库自动备份的两种解决方案 SQL Server中的角色(服务器级别和数据库级别角色) SqlServer服务器角色和数据库角色相关操作

  9. C#编写强大的SQL Server数据库自动备份服务

    数据库自动备份服务,带配置,还算可以吧 周末抽时间,编写了一个这样的工具,可以让,对数据库不了解或不熟悉的人,直接学会使用备份,省时省力,同样,我也将一份,通过脚本进行备份的,也奉献上来, 通过sql ...

随机推荐

  1. 重置Visual Studio 2017的配置

    1,从命令行进入VS 2017安装目录下面的Common7\IDE文件夹. 例如,Windows 10系统中 VS 2017 企业版的默认安装目录如下: C:\Program Files (x86)\ ...

  2. oracle EM 如何调整界面显示的语言

    EM是通过浏览器语言来识别界面语言的,没有选项调整.我以chrome为例将默认中文改为英文: EM调整前为中文界面: 调整chrome语言显示为英文: 再重新开一个窗口,打开EM,界面已经调整为英文了 ...

  3. topjui中datagrid增删改查

    1.掌握datagrid的创建方式在html中直接定义与在js中定义 可参考easyui的官方文档:http://www.jeasyui.net/plugins/183.html 2.实现代码如下:重 ...

  4. yum源 Python3 Django mysql安装

    yum 源安装 yum源位置: yum源仓库的地址 在/etc/yum.repos.d/,并且只能读出第一层的repo文件 yum仓库的文件都是以.repo结尾的 linux软件包管理 yum工具如同 ...

  5. Bokeh

    超级好用的显示图像用的package哟~~ 用法自己Google哟~ 特别喜欢这个带各种颜色的Bokeh.palette https://bokeh.pydata.org/en/latest/docs ...

  6. Asp.Net WebApi 使用OWIN架构后,出现 “没有 OWIN 身份验证管理器与此请求相关联(No OWIN authentication manager is associated with the request)” 异常的解决办法

    在Asp.Net WebApi 项目中使用OWIN模块之后,如果没有在OWIN的Startup类中配置认证方式,调用WebApi的相关Controller和Action就会出现如下异常: 出现错误. ...

  7. Kali Linux Netcat 学习 与 网络攻击

    Netcat 网络攻击 以及 应用 1.用Netcat进行黑客攻击第1部分:基础知识 Netcat是一个很好的网络实用程序,用于使用TCP和UPD协议读取和写入网络连接.Netcat通常被称为网络工具 ...

  8. 把json数据转换成集合

    Sting MessageList="";JSONArray json = JSONArray.fromObject(MessageList);JSONObject object ...

  9. Android自动化测试手段之Monkey(adb shell monkey)

    一. 什么是Monkey Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序 ...

  10. Ansible第一章:基础认识--小白博客

    ansible Ansible:Ansible的核心程序Host Lnventory:记录了每一个由Ansible管理的主机信息,信息包括ssh端口,root帐号密码,ip地址等等.可以通过file来 ...