GVKun编程网logo

SQL server 2008 数据安全(备份和恢复数据库)(sql server 2008数据备份与恢复)

2

在这篇文章中,我们将为您详细介绍SQLserver2008数据安全(备份和恢复数据库)的内容,并且讨论关于sqlserver2008数据备份与恢复的相关问题。此外,我们还会涉及一些关于Asp实现对sq

在这篇文章中,我们将为您详细介绍SQL server 2008 数据安全(备份和恢复数据库)的内容,并且讨论关于sql server 2008数据备份与恢复的相关问题。此外,我们还会涉及一些关于Asp实现对sqlserver数据库的在线备份和恢复、SQL Server 2008 master与msdb数据库的备份与恢复、SQL Server 2008 及更高版本数据库恢复方法之日志尾部备份、SQL Server 2008 备份数据库、还原数据库的方法的知识,以帮助您更全面地了解这个主题。

本文目录一览:

SQL server 2008 数据安全(备份和恢复数据库)(sql server 2008数据备份与恢复)

SQL server 2008 数据安全(备份和恢复数据库)(sql server 2008数据备份与恢复)

下边是我对部分内容的总结,里边偏向了T-sql语句实现的总结,对于sql Server Management Studio中对象管理器的操作并没有太多的总结,因为这些都有一些向导,而且,大部分都是在对应的节点,右击找相应的操作,相应的对象,然后根基向导去操作!

首先是大概知识点的总结:

下边是一些T-sql语句对应的总结,1,管理备份设备的语句:

2,备份的语句:

3,数据恢复的对应语句:

最后,

上边讲到了备份有完全备份,差异备份,事务日志备份和文件组和数据文件备份,恢复有简单恢复,简单恢复,大容量日志恢复。但是这四种备份方式有什么不同呢,有什么各自的用处呢?这三种恢复又需要什么条件呢?这里,我给大家剖析一下:

备份:

1,完全备份:备份内容,包括备份数据库中的所有数据,文件组或数据文件;适用类型:对于小型数据库和中型数据库,完全备份是最常用的技术.缺点:此过程非常耗时,一旦开始备份就不能中途停止.

2,差异备份:备份内容:记录自最后一次去备份以来改变的数据;适用类型:使用于进行过完全备份的数据库;缺点:还原时非常耗时,还原需要还原最后一次完全备份和以后所有的差异备份.

3,事务日志备份:备份内容,备份数据库中已经完成的事务,实现了备份可以真正灵活的时间点恢复;适用类型:数据库处于完全恢复和大容量日志恢复模式;

4,文件组备份:内容,对于与数据库中某个文件有关的所有数据文件的备份.类似于完全备份,但可以是小分支的备份.例如,可以备份一个公司中一个部门或工作组的备份.

5,数据文件备份:内容,只对文件组中的一个文件进行备份,同单独还原一个数据文件的功能协同工作.优点,时间短,可以选择性的备份数据库中的某些文件.

恢复:

1,简单恢复:需要:进行数据库恢复时仅使用数据库备份和差异备份而不涉及事务日志备份。效果:可以恢复到上一次备份的状态,但无法恢复到失败点的状态。

2,完全恢复:需要,采用数据库备份,差异备份和事务日志备份来恢复到失败点的时刻,需要将所有的数据库操作都写入到日志文件中;效果,不造成任何损失。

3,大容量日志备份:需要,和完全备份基本相同;效果,在性能上要优于上边两种方式,它最大努力减少了批操作所需要的存储空间。

Asp实现对sqlserver数据库的在线备份和恢复

Asp实现对sqlserver数据库的在线备份和恢复

为了网站数据的安全性,需要经常对数据库进行备份,以免某一天,数据丢失带来一系列的麻烦。在没有服务器的管理权限下,需要在线对数据库进行备份和恢复。这里介绍一下asp在线备份和恢复数据库的功能。

备份:

<% 

sql="backup database 数据库名 to disk='"&Server.MapPath("backup")&""&"backuptext.dat"&"'" 

set cnn=Server.createobject("adodb.connection") 

cnn.open "driver={sql Server};Server=服务器名;uid=sa;pwd=密码" 

cnn.execute sql 

on error resume next 

if err<>0 then 

   response.write "错误:"&err.Descripting 

else 

  response.write "数据备份成功!" 

end if 

%> 

恢复:

<% 

sql="Restore database 数据库名 from disk='"&Server.MapPath("backup")&""&"backuptext.dat"&"'" 

set cnn=Server.createobject("adodb.connection") 

cnn.open "driver={sql Server};Server=服务器名;uid=sa;pwd=密码" 

cnn.execute sql 

on error resume next 

if err<>0 then 

  response.write "错误:"&err.Descripting 

else 

  response.write "数据恢复成功!" 

end if 

%> 

注:以上语句是把数据备份到磁盘的backup目录下,文件名为backuptext.dat,大家在使用的过程中,可以自己定义备份的目录和文件名

SQL Server 2008 master与msdb数据库的备份与恢复

SQL Server 2008 master与msdb数据库的备份与恢复

sql server 2005 2008 master与msdb数据库的备份与恢复,master与msdb数据库的备份与普通数据库一样,本文主要描述master与msdb数据库的恢复的一些个人积累。 恢复master与msdb数据库关键在于以单用户模式启动,其它并没有太大的区别。 由于系统数据库对Sql

   sql server 2005 & 2008 master与msdb数据库的备份与恢复,master与msdb数据库的备份与普通数据库一样,本文主要描述master与msdb数据库的恢复的一些个人积累。

  恢复master与msdb数据库关键在于以单用户模式启动,其它并没有太大的区别。

  由于系统数据库对Sql Server来说尤其重要,为了确保SQL SERVER系统的正常运行,除了日常备份用户的数据库之外,我们还需要备份系统数据库,如对Master,Model,Msdb(TempDB不需备份)进行完整备份

  1、还原Master数据库

  如果系统配置丢失或Master出现问题,可以进入单用户模式进行还原;如果出现下列情况,必须重新生成损坏的 master 数据库:

点击下载“嗨格式数据恢复大师”;

  A. master 数据库的当前备份不可用。

  B. 存在 master 数据库备份,但由于 Microsoft SQL Server 实例无法启动,因此无法还原该备份。

  1、重新生成 master 数据库:

  注意:

  在 SQL Server 2005 中已废止 Rebuildm.exe 程序。若要重新生成 master 数据库,请使用 setup.exe。

  1、 Start /wait setup.exe /qn INSTANCENAME= REINSTALL=SQL_Engine REBUILDDATABASE=1 SAPWD=

  例:start /wait e:“setup.exe /qn INSTANCENAME=mssqlserver REINSTALL=SQL_Engine REBUILDDATABASE=1 SAPWD=abc123@!@

  注:INSTANCENAME:指定实例名,默认实例则用mssqlserver表示

  REINSTALL:指定引擎

  SAPWD:强密码

  Setup.exe:指定光盘1中的根目录下的文件

  /qn 开关用于取消所有安装程序对话框和错误消息。如果指定 /qn 开关,则所有安装程序消息(包括错误消息)都将写入安装程序日志文件。有关日志文件的详细信息,请参阅如何查看 SQL Server 2005 安装日志文件。

  指定 /qb 开关将显示基本的安装程序对话框。还会显示错误消息。

  2、 还原Master备份(在恢复master的备份时要注意:必须在单用户(single user)模式下进行 ) a.进入单用户模式的方法:

  1.在命令行模式下输入sqlservr -c -f -m或者输入sqlservr -m

  其中:-c 可以缩短启动时间,,SQL Server 不作为Windows NT的服务启动

  -f 用最小配置启动SQL Server

  -m 单用户模式启动SQL Server

  2.系统默认没有设置PATH,先进入CMD,进入“C:“Program Files“Microsoft SQL Server“MSSQL.1“MSSQL“Binn”,执行SQLSERVR.EXE –M

  打开SSMS工具,先断开连接,再新建查询,执行以下命名还原

  USE master

  GO

  RESTORE DATABASE master

  FROM disk=‘c:“master.bak‘

  GO

  开始实验了~~~

  MASTER重新生成

  为了模拟MASTER数据库坏了,我们就删除MASTER数据库(要停止SQL SERVER服务才能删除)在我的电脑,C:“ PROGRAM FILES“MICROSOFT SQL SERVER“MSSQL.1“MSSQL“DATE 中删除MASTER.MDF

  重新生成MASTER

  1.首先在CMD中输入

  start /wait setup.exe /qn INSTANCENAME= REINSTALL=SQL_Engine REBUILDDATABASE=1 SAPWD=

  其中的 SETUP.EXE为启动光盘的路径,我这里的是 E:“SETUP.EXE /QN

  我这里的为默认实例所以其中的用 MSSQLSERVER代替

  最后的为密码我设密码为abc123@!@,所以就用abc123@!@代替

  若没有返回错误,我们就可以到我的电脑中C:“ PROGRAM FILES“MICROSOFT SQL SERVER“MSSQL.1“DATE上面又有MASTER.MDF了

  接下来进入目录

  单用户模式

  启动SSMS工具,新建查询

  输入命令

  启动服务(MSSQL SERVER)

  打开SSMS

  连接到数据库后就可以发现数据库中的数据又回来了

  以下是我在命令行下搞的命令,我用记事本的方式全部复制下来了,为了不传附件,我就直接粘贴到下面了

  Microsoft Windows [版本 5.2.3790]

  (C) 版权所有 1985-2003 Microsoft Corp.

  C:“Documents and Settings“Administrator>start /wait e:“setup.exe /qn INSTANCENAME=mssqlserver REINSTALL=SQL_Engine REBUILDDATABASE=1 SAPWD=abc123@!@

  C:“Documents and Settings“Administrator>cd C:“Program Files“Microsoft SQL Server“MSSQL.1“MSSQL“Binn

  C:“Program Files“Microsoft SQL Server“MSSQL.1“MSSQL“Binn>sqlservr.exe -m

  2008-04-18 15:47:46.56 Server Authentication mode is MIXED.

  2008-04-18 15:47:46.59 Server Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86)

  Oct 14 2005 00:33:37

  Copyright (c) 1988-2005 Microsoft Corporation

  Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 1)

  2008-04-18 15:47:46.59 Server (c) 2005 Microsoft Corporation.

  2008-04-18 15:47:46.59 Server All rights reserved.

  2008-04-18 15:47:46.59 Server Server process ID is 3984.

  2008-04-18 15:47:46.59 Server Logging SQL Server messages in file ‘C:“Program Files“Microsoft SQL Server“MSSQL.1“MSSQL“LOG“ERRORLOG‘.

  2008-04-18 15:47:46.59 Server This instance of SQL Server last reported using a process ID of 764 at 2008-4-18 15:46:40 (local) 2008-4-18 7:46:40 (UTC). This is an informational message only; no user action is required.

  2008-04-18 15:47:46.60 Server Registry startup parameters:

  2008-04-18 15:47:46.60 Server -d C:“Program Files“Microsoft SQL Server“MSSQL.1“MSSQL“DATA“master.mdf

  2008-04-18 15:47:46.60 Server -e C:“Program Files“Microsoft SQL Server“MSSQL.1“MSSQL“LOG“ERRORLOG

  2008-04-18 15:47:46.60 Server -l C:“Program Files“Microsoft SQL Server“MSSQL.1“MSSQL“DATA“mastlog.ldf

  2008-04-18 15:47:46.62 Server Command Line Startup Parameters:

  2008-04-18 15:47:46.62 Server -m2008-04-18 15:47:46.64 服务器 SQL Server is starting at normal priority base (=7). This is an informational message only. No user action is required.

  2008-04-18 15:47:46.67 服务器 Detected 1 CPUs. This is an informational message; no user action is required.

SQL Server 2008 及更高版本数据库恢复方法之日志尾部备份

SQL Server 2008 及更高版本数据库恢复方法之日志尾部备份

 经常看到有人误删数据,或者误操作,特别是 update 和 delete 的时候没有加 where,然后就喊爹喊娘了。人非圣贤孰能无过,做错可以理解,但不能纵容,这个以后再说,现在先来解决问题。

        遇到这种情况,一般都是没有做备份,不然也不会来发问了。首先要冷静,否则会有更大的灾难。直到你放弃。

解决方法:

       对于这类问题,主要是找回误操作之前的数据,在 2008 之前,有个很出名的工具 Log Exploer,听说还挺好用的,这个网上大把教程,这里就不多说了。但是唯一遗憾的是,不支持 2008 及更高版本,这时除了其他第三方工具,那么最常用的就是本文提到的方法 —— 日志尾部备份。本文实验环境 2008R2,对于 2008 及其以上版本可以使用这个方法,其实 2005 也可以,2000 很少用,没试过,只是 2008 之前可以使用 Log Exploer,所以就没必要用这种方法。

      下面图文并茂讲解操作方法,至于原理,不属于本文范围,而且我相信真遇到误操作的时候,估计没人会看原理了。

步骤:

(1)、检查数据库的恢复模式,如图:

或者使用脚本检查:

SELECT recovery_model,recovery_model_desc 
FROM sys.databases 
WHERE name =''

结果如下:

        确保数据库的恢复模式最起码不能为【简单】。至于如何修改成完整模式,我觉得这些应该没必要多说了。 

       切记,对于任何重要环境,不仅仅是客户正式环境(俗称生产环境),都强烈建议使用【完整恢复模式】,虽然对于另外两种(大容量日志(BULK_LOGGED)、简单(SIMPLE))来说,完整恢复模式产生的日志会大,但是在出现问题的时候,就会觉得这些都不算什么了。并且我也想不到任何理由对于正式环境不使用完整恢复模式。只要管理得当,完整恢复模式的日志也不会太变态。 

(2)、这里其实隐含另外一步,曾经做过最少一次的完整备份。因为所有类型的备份都基于完整备份,如果没有最少一次完整备份,其他类型的备份都是多余的,所以在这里强调一下,在创建完一个新数据库之后,强烈建议甚至强制做一次完整备份。

SELECT database_name,recovery_model,name
FROM ms

使用上面的语句粗略可以看到有那些数据库做过备份,由于测试,所以做了几次备份,可以看到我这个时间点已经做了备份了。

(3)、确保别人不再连接数据库,然后做一次日志尾部备份:

首先先创建一点数据:

由于 tempdb 永远为简单恢复模式,所以不适合做案例。 
这里使用微软的示例数据库 AdventureWorks 

*/ 
USE AdventureWorks 
GO 
IF OBJECT_ID(''testRestore'') IS NOT NULL
 DROP TABLE testRestore 
GO 
CREATE TABLE testRestore 
 ( 
  id INT IDENTITY(1, 1) , 
  NAME VARCHAR(50) 
 ); 
--插入测试数据:  
INSERT INTO testRestore(Name) 
SELECT ''test1''
UNION ALL
SELECT ''test2''
UNION ALL
SELECT ''test3''
UNION ALL
SELECT ''test4''
UNION ALL
SELECT ''test5''
UNION ALL
SELECT ''test6''
UNION ALL
SELECT ''test7''
UNION ALL
SELECT ''test8''
SELECT * FROM testRestore 

检查一下结果:

然后来做个删除操作,为了定位是啥时候发生的,我加了一个 waitfor 命令,让它在某个时间发生,这样恢复的时候就有准确性:

USE AdventureWorks 
GO 
WAITFOR TIME ''21:45''
DELETE FROM dbo.testRestore

现在来看看数据:

USE AdventureWorks 
GO 
SELECT * FROM dbo.testRestore

到这一步,灾难出现了,但是切记要冷静。

下面就是本文的重点开始,做一次日志备份,最重要是选择【备份日志尾部】

然后在【选项】页选择:除【事务日志】除,其他红框包裹的地方为强烈建议勾选的地方。并且保证数据库不要有别人在连接,因为备份日志尾部会使数据库处于还原状态,拒绝其他会话的连接,如果不断开其他连接,是备份不了的。

然后按确定,当然,可以使用上方的【脚本】来生成语句:

USE Master 
GO 
BACKUP LOG [AdventureWorks] TO DISK = N''E:\AdventureWorks.bak'' WITH NO_TRUNCATE , NOFORMAT, NOINIT, NAME = N''AdventureWorks-事务日志 备份'', SKIP, NOREWIND, NOUNLOAD, NORECOVERY , COMPRESSION, STATS = 10, CHECKSUM 
GO 
declare @backupSetId as int
select @backupSetId = position from msdb..backupset where database_name=N''AdventureWorks'' and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=N''AdventureWorks'' ) 
if @backupSetId is null begin raiserror(N''验证失败。找不到数据库“AdventureWorks”的备份信息。'', 16, 1) end
RESTORE VERIFYONLY FROM DISK = N''E:\AdventureWorks.bak'' WITH FILE = @backupSetId, NOUNLOAD, NOREWIND 
GO 

此时,数据库会处于【正在还原】的状态



如果发现备份不了可以用下面语句查看,并把 spid 杀掉:

SELECT  * FROM sys.sysprocesses WHERE dbid=DB_ID(''AdventureWorks'') 

执行结果:

然后 kill 掉。

接着继续备份。

 然后进行还原,如图:

先要还原完整备份,选择最近的那次,由于日志备份的特性(以后其他文章再说),只认最后一次备份,所以要选择最新的那次,否则还原不了。

这里又有一个注意事项,记得选择:

接着还原日志文件,这是最最重要的一步:

然后:

由于实验的时候出了点问题,后面重做了,所以时间选择到 22:19 分,我是在 22:20 分删除数据的。这里不用太在意,只要把时间点指定到你误删除的时间之前即可。而由于日志尾部备份都是最后一个备份文件,所以这里选则红框部分即可:

现在再检查一下:

可以看到,数据已经还原成功。

总结:

平时不做备份,出问题来喊急,这是苟有自取,还有一些脑袋发热的人喜欢看到 ldf 很大就直接删除,那以后出问题就别怪微软了。

本文中的方法看上去有点繁琐,但是实操几次就觉得好了,但是步骤建议严格按照上面说的,因为一旦操作错误,就很麻烦,此时再次强调 —— 冷静冷静再冷静!!!!!!

这种方法有几个缺点:

1、如果你发现误操作以后还有很多人做了操作,那么你还原成功后,别人的操作就会冲掉,所以发生误操作后,要马上停止别人对数据库的操作。

2、 这个方法要对数据库独占,所以你想偷偷恢复是不行的了。勇敢承认错误吧。

对于核心数据表,还是要先做好预防操作,可以看:SQLServer 恢复表级数据。

SQL Server 2008 备份数据库、还原数据库的方法

SQL Server 2008 备份数据库、还原数据库的方法

sql Server 2008 备份数据库:

1.打开sql,找到要备份的数据库,右键 >> 任务 >>备份

2.弹出 [ 备份数据库对话框 ],如图:


3.点击添加 [ 按钮 ] . 如下图:


4.选择要备份的路径 和 备份的文件名 点击 [ 确定 ].

5.然后就一直点击确定就可以了 . 然后我们来到D:\ 看看

6.这个时候,你可以把它压缩打包什么的,要用的时候,在文件后面加 .bak 后缀 就可以用sql 来还原了,还原可以来看这里~

sql Server 2008 还原数据库:

1.得到数据库备份文件,怎么得到的,可以看上面的数据库备份方法

2.把备份文件加个.bak 的后缀,例如:

3.打开sql,你可以新建一个空数据库,或者利用原有的数据库,点击右键>>任务>>还原>>数据库

4.弹出 [ 还原数据库 ] 对话框,在常规选择页中,操作如下:


5.在 [ 选项 ] 选择页中,操作:


6.直接按 确定 就 可以了 (PS: 之前还原第一次的时候 发生了错误,我用了sa登录,可能是权限问题报错了,后来用WINDOWS身份认证的才得).

我们今天的关于SQL server 2008 数据安全(备份和恢复数据库)sql server 2008数据备份与恢复的分享就到这里,谢谢您的阅读,如果想了解更多关于Asp实现对sqlserver数据库的在线备份和恢复、SQL Server 2008 master与msdb数据库的备份与恢复、SQL Server 2008 及更高版本数据库恢复方法之日志尾部备份、SQL Server 2008 备份数据库、还原数据库的方法的相关信息,可以在本站进行搜索。

本文标签: