恢复整个SQL server数据库还是只恢复错误文件组

这有一个具体例子:如果你有一个单个的出现问题的文件。这个文件有50MB大小,而你的整个数据库 运行着大约有几十亿的字节,这样的话如果能恢复单个失败文件的话就显的非常有意义。这样的事情发生 的一个情景是当文件或者文件组在单独的驱动器上,而驱动器出现了问题。通常,仅仅恢复单个文件或者 文件组会使总的停止时间缩短,因为它明显减少了需要恢复的总的数据量。

现在,为什么你不选择这么做呢?这有一些原因:

你需要有事务日志备份。如果你想从备份中恢复一个文件或者文件组,你同时也需要恢复与它们一起 创建的事务记录备份,从而使整个数据库能够处于一个一致的状态。在SQL Server 2000 和 2005中,你 需要使用Full Recovery或者Bulk-Logged Recovery模式(也就是说不是Simple Recovery)来使它成为可能 。我应该指出SQL Server的实现者们并没有尽他们的努力来完成判断从上一次备份一个文件或者文件组是 否已经被修改了的功能。如果没有被改变,那么事务记录是没有什么必要的。但是,总的来说,还是需要 事务记录备份的,如果你现在还没有一个备份事务记录的恢复或者备份计划,那么现在就创建一个吧。

在要恢复的文件或者文件组中的表格与数据库中其他的表格之间的数据不一致性成为需要考虑的一个 问题。如果你有相互之间依赖的表格,并且这些表格没有被存储在相同的物理文件或者文件组中(这有时 是不可避免的),仅仅恢复一个文件或者文件组可能会导致它与数据库其他部分不同步。例如,你有一个 表格被另一个表格用JOIN关联,并且这个JOIN使用了一个视图和存储过程,这时仅仅恢复一个而不恢复另 一个可能会有问题。

当你在数据库中只有一个文件组。如果你的所有的数据仅仅存储在一个文件或者文件组中,并且它又 不是一个特别大的数据库时,会发生什么事情呢?那时恢复一个文件或者文件组的努力就变的没有什么意 义了。

选择性的恢复文件或者文件组的主要原因是当恢复数据库很大,以至于恢复整个数据库的代价很大的 时候,使得对数据库的局部损坏的恢复成为可能。在一个非常小的轻量级的数据库里,和nonproduction 系统中,或者数据库中只有一个文件组的时候,实现选择性的恢复功能就显的没有太大的意义,因为这时 恢复整个数据库和恢复单个的文件或者文件组没有什么太大的区别。

我发现大多数时候当人们想使用文件或者文件组恢复时,他们实际上是想把一个特定的表格恢复到先 前的一个点的时刻的状态。这在SQL Server中不是一个显式支特的特性,但是存在这么做的方法,倘若你 不介意由于采用这种方法而需要手工的来管理可能产生的不一致(就想上面#2所说的)。如果你手边就有一 个数据库备份的话,你可以简单的恢复那个备份,仅仅把它看作是相同数据库的不同名字的实例。接着, 通过事务记录把数据库向前滚动到指定的点(如果需要这样做的话),然后手工的把当前的数据库拷贝到目 标数据库中。

我自己已经实验过这种方法几次,但是仅仅只有一个表格没有与相同数据库中的其他的表格有很大的 关联。我的例子涉及了一个包含了留言版系统的聊天网站。我不得不经常恢复一些在留言版上被意外删除 的消息,这些是自包含的:从留言版表格的数据产生的唯一的JOINs是外部的而不是内部的。因此,我可 以随意的更新表格因为我知道我不会让那个表格与其他表格不同步的。

在SQL Server 2000和它更高的版本中,当你做一个RESTORE操作的时候你可以使用PARTIAL子句,从而 使仅仅需要的文件组数据被恢复。这作为一个时间和空间上的节约开销的措施是非常有用的:你不需要进 行繁重的恢复所有数据的工作,而仅仅只需要对一个表格进行操作。而且很可能也没有足够的空间来进行 完全的恢复操作。

时间: 2024-08-02 20:18:14

恢复整个SQL server数据库还是只恢复错误文件组的相关文章

在C#中运用SQLDMO备份和恢复Microsoft SQL Server数据库

server|备份|恢复|数据|数据库 在C#中运用SQLDMO备份和恢复Microsoft SQL Server数据库 SQLDMO(SQL Distributed Management Objects,SQL分布式管理对象)封装了Microsoft SQL Server数据库中的对象.SQLDMO是Microsoft SQL Server中企业管理器所使用的应用程序接口,所以它可以执行很多功能,其中当然也包括对数据库的备份和恢复. SQLDMO由Microsoft SQL Server自带的

sql server数据库保存图片或者其他小文件

原文:sql server数据库保存图片或者其他小文件 测试用sql server数据库保存图片或者其他小文件. 文件流字段用varbinary类型. static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); AsposeHelper ah = new AsposeHelper(); //ah.extractImagesToFiles()

没有SQL Server数据库时如何打开.MDF文件_MsSql

如果您在试图打开一个.MDF数据库文件时,却发现自己没有安装SQL Server数据库,该怎么办呢?这时候,如果恰巧您的机子上装有Visual Studio 2005或者是更高的版本时,不用安装SQL Server数据库也能打开.MDF数据库文件.本文我们主要介绍了这一方法的实现,接下来我们就开始介绍. 解决方法: 打开Visual Studio 2005,在项目中点击工具→连接到数据库会出现更改数据源,选择, 点确定,会出现如下窗口: 浏览到你的mdf数据库文件: 点打开 然后点连接测试,如果

没有SQL Server数据库时如何打开.MDF文件

如果您在试图打开一个.MDF数据库文件时,却发现自己没有安装SQL Server数据库,该怎么办呢?这时候,如果恰巧您的机子上装有Visual Studio 2005或者是更高的版本时,不用安装SQL Server数据库也能打开.MDF数据库文件.本文我们主要介绍了这一方法的实现,接下来我们就开始介绍. 解决方法: 打开Visual Studio 2005,在项目中点击工具→连接到数据库会出现更改数据源,选择, 点确定,会出现如下窗口: 浏览到你的mdf数据库文件: 点打开 然后点连接测试,如果

SQL Server数据库崩溃如何恢复

server|恢复|数据|数据库 任何数据库系统都无法避免崩溃的状况,即使你使用了Clustered,双机热备--仍然无法完全根除系统中的单点故障,何况对于大部分用户来说,无法承受这样昂贵的硬件投资. 所以,在系统崩溃的时候,如何恢复原有的宝贵数据就成为一个极其重要的问题了. 在恢复的时候,最理想的情况就是你的数据文件和日志文件都完好无损了,这样只需要sp_attach_db,把数据文件附加到新的数据库上即可,或者在停机的时候把所有数据文件(一定要有master等)都copy到原有路径下也行,不

C#各种扩展名文件存入sql server数据库及读取到本地文件

sql server表结构如下: create table DataTable ( Id int identity(1,1) not null primary key, FileName nvarchar(100) not null, FilePath nvarchar(200) not null, Data varbinary(MAX) ) 主要方法: using System; using System.Collections.Generic; using System.Linq; usin

SSIS:两种将SQL Server数据库数据输出成XML文件的方法

在 SSIS 中并没有直接提供从数据源到 XML 的转换输出,Destination 的输出对象有 Excel File, Flat File, Database 等,但是并没有直接提供 XML 文件输出的配置. 但是我们仍然可以通过下面这些方法来实现: 方法一:使用平面文件对字符串 XML 转换输出 方法二:使用 Script Task 将 XML 字符串输出 测试数据库 - AdventureWorks2012 测试表 - [Sales].[SalesOrderDetail] 比如说我们要将

在C#中运用SQLDMO备份和恢复SQL Server数据库

server|备份|恢复|数据|数据库     SQLDMO(SQL Distributed Management Objects,SQL分布式管理对象)封装了Microsoft SQL Server数据库中的对象.SQLDMO是Microsoft SQL Server中企业管理器所使用的应用程序接口,所以它可以执行很多功能,其中当然也包括对数据库的备份和恢复. SQLDMO由Microsoft SQL Server自带的SQLDMO.dll提供,由于SQLDMO.dll是一个COM对象(有关C

《数据库基础及实践技术——SQL Server 2008》一3.1 SQL Server数据库概述

3.1 SQL Server数据库概述 SQL Server 2008中的数据库由包含数据的表集合以及其他对象(如视图.索引.存储过程等)组成,目的是为执行与数据有关的活动提供支持.SQL Server支持在一个实例中创建多个数据库,每个数据库在物理和逻辑上都是独立的,相互之间没有影响.每个数据库存储相关的数据.例如,可以用一个数据库存储商品及销售信息,用另一个数据库存储人事信息. 从数据库的应用和管理角度来看,SQL Server将数据库分为两大类:系统数据库和用户数据库.系统数据库是SQL