网站制作     数据库教程     
导航: 好喜爱学习网 >> 网站制作 >> 数据库教程 >> Sql server数据库备份的三个恢复模型

Sql server数据库备份的三个恢复模型


好喜爱学习网 HaoXiAi.Net 分类:网站制作 数据库教程 来源:网络收集 录入:管理员
  • SQL 新增/修改 表字段列的类型等
  • 例如:修改(列名前要有column关键字)ALTERTABLE[USER
  • sql删除记录
  • Delete语句是用来从表中删除记录或者行,其语句格式为:deletef
  • 远程连接sql server 2000服务器的解决方案
  • 远程连接sqlserver2000服务器的解决方案 一看ping服务器
  • SQL Server数据导入导出工具BCP详解
  • bcp是SQLServer中负责导入导出数据的一个命令行工具,它是基于D
  • 在SQL Server 2000中,有无数种备份数据库的方法。无论你的数据库有多大、改变是否频繁,都有满足你的要求的备份策略。让我们看看几种可以在不同环境下工作的基本备份策略。

    本文假定你有备份数据库的权限。也就是说,你要么是系统管理员,要么是db_owner或者backupadministrator。还有,我们还假定你的操作系统提供了访问备份所需要的资源的权利,例如,访问磁盘或者磁带驱动器。

    从哪儿开始

    在你开始备份一个SQL Server数据库之前,你需要知道该数据库使用了哪个恢复模型。这里有三种不同的恢复模型:FULL、BULK_LOGGED和SIMPLE。

    FULL恢复模型向你提供了最大的恢复灵活性。新数据库默认使用的就是这种恢复模型。利用这种模型,你可以恢复数据库的一部分或者完全恢复。假设交易记录(transactions log)还没有被破坏,你还可以在失败之前恢复出最后一次的已提交(committed)交易。在所有的恢复模型中,这种模型使用了最多的交易记录空间,并轻微影响了SQL Server的性能。

    BULK_LOGGED恢复模型比FULL模型少了一些恢复选项,但是进行批操作(bulk operation)时它不会严重影响性能。在进行某些批操作时,由于它只需记录操作的结果,因此它使用了较少的记录空间。然而,用这种模型,你不能恢复数据库中的特定标记,也不能仅仅恢复数据库的一部分。

    SIMPLE恢复模型是这三种模型中最容易实施的,它所占用的存储空间也最小。然而,你只能恢复出备份结束时刻的数据库。

    为了找出你所用数据库的恢复模型,可以运行下面的命令,该命令应该返回FULL、BULK_LOGGED和SIMPLE这三个值中的某一个:

    SELECT dbpropertyex("database", "recovery")

    为了改变数据库的恢复选项,运行下面的命令:

    ALTER DATABASE database name SET RECOVERY {FULL | SIMPLE | BULK_LOGGED}

    除数据之外,SQL Server备份还包括数据库大纲(schema)和数据库元数据(即数据库文件、文件组和它们的位置)。SQL Server允许在备份时用户依然使用数据库,所以在备份期间发生的交易也记录到备份中去了。

    备份数据库

    为了备份数据库,你可以运行BACKUP命令。(你也可以使用SQL Enterprise Manager。)在执行命令之前知道它的语法永远是个好主意。BACKUP命令有许多选项,它的基本语法是:

    BACKUP DATABASE { database_name }

    TO < backup_device > |

    backup_device可以是磁盘或者磁带——或者它也可以是一个用磁盘文件、磁带或者已命名管道表示的逻辑上的备份设备。

    如果你想做一个快速、一次性的备份,那么向下面那样使用磁盘文件:

    BACKUP DATABASE Northwind TO DISK = "c:\backup\Northwind.bak"

    如果你想把数据库备份到另外一台服务器上,可以使用UNC名字:

    BACKUP DATABASE Northwind TO DISK = "\\FILESERVER\Shared\Backup\Northwind.bak"

    如果想进行有规律、有计划的备份,就需要使用逻辑备份设备。一个逻辑备份设备可以保存若干个数据库备份并驻留在磁盘、磁带或者已命名管道上。如果你使用磁带设备,磁带驱动器必须在同一台物理服务器上。已命名管道可以利用第三方备份软件。

    为了创建逻辑备份设备,使用sp_addumpdevice系统保存过程。SQL Enterprise Manager也可以用来创建备份设备。命令行语法如清单A所示。

    清单B给出了一个在磁盘上创建逻辑备份设备的例子。

    当备份设备创建完毕,Northwind数据库可以用下面的命令进行备份:

    BACKUP DATABASE Northwind TO DiskBackup

    频繁变动的大数据库的备份

    现在,我已经演示了如何备份整个数据库。然而,它只允许你恢复备份结束时刻的数据库所保存的数据。如果数据库很大并且频繁变动,由于时间和空间的限制,频繁进行全数据库备份是不现实的。当数据库失败时,可能会造成大量数据丢失。

    在这种情况下,有两种提高可恢复性的途径,这两个途径都要求全数据库备份。而且这两种方法都要求数据库恢复模型为FULL或者BULK_LOGGED。

    第一种方法采用差异数据库备份,它只捕获并保存全数据库备份后改变的数据。由于它的文件较小而且信息简明,用它进行数据恢复的速度非常快。

    下面的例子在一个名为DiffBackupDevice的逻辑备份设备上创建了一个差异备份:

    BACKUP DATABASE Northwind TO DiffBackupDevice WITH DIFFERENTIAL

    第二个提高可恢复性的方法利用交易记录备份,恢复可以在一个特定的时间点上完成。

    你可能会问这怎么可能。记住,交易记录的目的就是记录发生在数据库中所有交易。交易记录允许COMMIT和ROLLBACK正确工作。为了达到这个功能,该数据的变化前后的数值必须随同操作类型、交易开始(时间)等一齐被记录下来。

    备份技巧

    利用下面的列出的技巧来确保你不会在每周一次的数据库备份过程中忘记关键步骤。

    每周一次备份主数据库。如果你创建、修改或者停止一个数据库,添加新的SQL Server消息,添加或者停止连接服务器,或者添加记录设备,那就进行手工备份。

    每天备份一次msdb数据库。它一般非常小,但很重要,因为它包含了所有的SQL Server工作、操作和计划任务。

    只有当你修改它时,才有必要备份模型数据库。

    用SQL Server Agent来安排你的备份工作的时间表。

    如果在你的生产(production)环境中有现成资源,备份生产数据库到本地磁盘或者网络服务器(用同一个开关)。然后,把备份文件/设备拷贝到磁带上。在存在许多硬件故障(特别是在RAID系统中)的情况下,磁盘常常是完好的(inact)。如果备份文件是在磁盘上,那么恢复时的速度会提高很多。

    备份开发和测试数据库至少要用到SIMPLE恢复模型。

    除了有计划的定时备份外,在进行未记录的(nonlogged)批操作(如,批拷贝)、创建索引、或者改变恢复模型后要备份用户数据库。

    如果你使用的是SIMPLE恢复模型,记住在截短(truncate)交易记录之后备份你的数据库。

    用文档记录你的恢复步骤。至少要大概记录这些步骤,注意所有的重要文件的位置。

    在截短记录之前,也就是所有的已提交(committed)交易从记录中清空之前,所有的这些信息都保存在交易记录中。在SIMPLE恢复模型中,记录在一个CHECKPOINT期间内截短(在SQL Server内存缓冲写道磁盘时),它是自动发生的,但也可以手动执行。这也就是SIMPLE恢复模型不支持时间点(point-in-time)恢复的原因。在FULL和BULK_LOGGED恢复模型下,当交易记录被备份时,交易记录被截短,除非你明确指出不进行截短。

    为了备份交易记录,使用BACKUP LOG命令。其基本语法与BACKUP命令非常相似:

    BACKUP LOG { database } TO

    下面是如何把交易记录备份到一个名为LogBackupDevice的逻辑设备上的例子:

    BACKUP TRANSACTION Northwind TO LogBackupDevice

    如果你不希望截短交易记录,使用NO_TRUNCATE选项,如下所示:

    BACKUP TRANSACTION Northwind TO LogBackupDevice WITH NO_TRUNCATE

    只是基本知识

    尽管我在本文中仅仅概述了数据库恢复的基本知识,你还是可以通过这些技巧来找到正确的方向。那么,为了避免不必要的(丢失数据造成的)恐慌,你要做到每周备份主数据库,每天备份msdb。

    SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数; SQL>selectascii('A')A,ascii('a')a,ascii('0')zero,ascii('')spacefromdual; AAZEROSPACE Pstyle="TEXT......
    解决方案:用户'sa'登录失败。原因:未与信任SQLServer连接相关联。 今天进行身份验证时,又遇到这个问题,所以将我的解决方案整理一下,供有同样遭遇的朋友分享: 问题简述:用户'sa'登录失败。原因:未与信任SQLServer连接相关联。说明:执行当前Web请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息:System.Data.SqlClient.SqlException:用户'sa'登录失败......

    [网友推荐]
  • Oracle SQL内置函数大全(一)
    SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数; SQL>sele
  • Url重写之action改变的问题
    namespaceActionlessForm{publicclassForm:System.Web
  • MS-SQL数据库开发常用汇总
    1.按姓氏笔画排序:Select*FromTableNameOrderByCustomerNameC
  • 动态创建SQL Server数据库、表、
    下面是利用SQL语句创建数据库、表、存储过程、视图、索引、规则、修改表、查看数据等的方法。所要增
  • Oracle创建实例的最少参数需求
    我们知道,Oracle在启动过程中,需要读取参数文件(pfile/spfile)来创建实例.Orac
  • Oracle进程导致CPU 100%解决
    Oracle进程导致CPU100%解决步骤 1--检查系统 sar-u55 2--看谁在用CP
  • 数据库中的命名规则
    数据库涉及字符规则 采用26个英文字母(区分大小写)和0-9这十个自然数,加上下划线_组成,共
  • SQL server 2000关于日期的
    在平时的开发中,经常会用到基于某个时间段的查询,比如选择开始日期、结束日期.(yyyy-MM-dd格
  • oracle使用命令行导入导出方案
    当无法登录OMS使用可视化工具进行导入导出操作时,可使用以下方法复制方案 CMD进入DOS1.导出
  • 实现win2003下mysql数据库每天
    转自http://www.softpure.com-BLOG--------------------
  • 浅谈SQL Server数据类型最大值
    事情开始得很简单。MegaWare公司市场部门想要一个新的网站来发布文档,开发团队觉得使用SQLSe
  • [SQL Server]连接中的常见错误
    SQLServer连接中的常见错误: 一、"SQLServer不存在或访问被拒绝"
  • [SQL Server]无日志恢复数据库
    数据库日志文件的误删或别的原因引起数据库日志的损坏 方法一 1.新建一个同名的数
  • [SQL Server]简单三步堵死SQ
    SQL注入是什么? 许多网站程序在编写时,没有对用户输入数据的合法性进行判断,使应用程序存
  • [相关文章]
    [网站热点]
    好喜爱学习网 HaoXiAi.Net 联系方式 网站制作 数据库教程
    本站为非营利性质个人网站,建站只为个人爱好与学习,本页内容为Sql server数据库备份的三个恢复模型;
    网站内容来源于互联网收集整理,禁止用于非法途径,如发现本网站上有侵权的文章请联系我们,我们会尽快删除;
    本站不对站点内容准确性、完整性和真实性作任何承诺,由此产生的后果本站不承担任何责任,对以上引起的一切法律纠纷本站无权利承担。