仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 549|回复: 8
打印 上一主题 下一主题

[学习教程] MSSQL网站制作之[Sql server]数据备份的三个恢复模子

[复制链接]
蒙在股里 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:21:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
为多种编程语言提供了API。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。<pstyle="TEXT-INDENT:2em">在SQLServer2000中,有没有数种备份数据库的办法。不管你的数据库有多年夜、改动是不是频仍,都有满意你的请求的备份战略。让我们看看几种能够在分歧情况下事情的基础备份战略。

  本文假定你有备份数据库的权限。也就是说,你要末是体系办理员,要末是db_owner大概backupadministrator。另有,我们还假定你的操纵体系供应了会见备份所必要的资本的权力,比方,会见磁盘大概磁带驱动器。

  从哪儿入手下手

  在你入手下手备份一个SQLServer数据库之前,你必要晓得该数据库利用了哪一个恢复模子。这里有三种分歧的恢复模子:FULL、BULK_LOGGED和SIMPLE。

  FULL恢复模子向你供应了最年夜的恢复天真性。新数据库默许利用的就是这类恢复模子。使用这类模子,你能够恢单数据库的一部分大概完整恢复。假定买卖纪录(transactionslog)还没有被损坏,你还能够在失利之前恢复出最初一次的已提交(committed)买卖。在一切的恢复模子中,这类模子利用了最多的买卖纪录空间,并稍微影响了SQLServer的功能。

  BULK_LOGGED恢复模子比FULL模子少了一些恢复选项,可是举行批操纵(bulkoperation)时它不会严峻影响功能。在举行某些批操纵时,因为它只需纪录操纵的了局,因而它利用了较少的纪录空间。但是,用这类模子,你不克不及恢单数据库中的特定标志,也不克不及仅仅恢单数据库的一部分。

  SIMPLE恢复模子是这三种模子中最简单实行的,它所占用的存储空间也最小。但是,你只能恢复出备份停止时候的数据库。

  为了找出你所用数据库的恢复模子,能够运转上面的命令,该命令应当前往FULL、BULK_LOGGED和SIMPLE这三个值中的某一个:

  SELECTdbpropertyex("database","recovery")

  为了改动数据库的恢复选项,运转上面的命令:

  ALTERDATABASEdatabasenameSETRECOVERY{FULL SIMPLE BULK_LOGGED}

  除数据以外,SQLServer备份还包含数据库纲目(schema)和数据库元数据(即数据库文件、文件组和它们的地位)。SQLServer同意在备份时用户仍然利用数据库,以是在备份时代产生的买卖也纪录到备份中往了。

  备份数据库

  为了备份数据库,你能够运转BACKUP命令。(你也能够利用SQLEnterpriseManager。)在实行命令之前晓得它的语法永久是个好主张。BACKUP命令有很多选项,它的基础语法是:
  1.   BACKUPDATABASE{database_name}  TO<backup_device> 
复制代码
  backup_device能够是磁盘大概磁带――大概它也能够是一个用磁盘文件、磁带大概已定名管道暗示的逻辑上的备份设备。

  假如你想做一个疾速、一次性的备份,那末向上面那样利用磁盘文件:

  BACKUPDATABASENorthwindTODISK="c:ackupNorthwind.bak"

  假如你想把数据库备份到别的一台服务器上,可使用UNC名字:

  BACKUPDATABASENorthwindTODISK=FILESERVERSharedBackupNorthwind.bak


假如想举行有纪律、有企图的备份,就必要利用逻辑备份设备。一个逻辑备份设备能够保留多少个数据库备份并驻留在磁盘、磁带大概已定名管道上。假如你利用磁带设备,磁带驱动器必需在统一台物理服务器上。已定名管道能够使用第三方备份软件。

  为了创立逻辑备份设备,利用sp_addumpdevice体系保留历程。SQLEnterpriseManager也能够用来创立备份设备。命令行语法如清单A所示。

  清单B给出了一个在磁盘上创立逻辑备份设备的例子。当备份设备创立终了,Northwind数据库能够用上面的命令举行备份:

  BACKUPDATABASENorthwindTODiskBackup

  频仍变化的年夜数据库的备份

  如今,我已演示了怎样备份全部数据库。但是,它只同意你恢复备份停止时候的数据库所保留的数据。假如数据库很年夜而且频仍变化,因为工夫和空间的限定,频仍举行全数据库备份是不实际的。当数据库失利时,大概会形成大批数据丧失。

  在这类情形下,有两种进步可恢复性的路子,这两个路子都请求全数据库备份。并且这两种办法都请求数据库恢复模子为FULL大概BULK_LOGGED。

  第一种办法接纳差别数据库备份,它只捕捉并保留全数据库备份后改动的数据。因为它的文件较小并且信息简明,用它举行数据恢复的速率十分快。

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

  BACKUPDATABASENorthwindTODiffBackupDeviceWITHDIFFERENTIAL

  第二个进步可恢复性的办法使用买卖纪录备份,恢复能够在一个特定的工夫点上完成。

  你大概会问这怎样大概。记着,买卖纪录的目标就是纪录产生在数据库中一切买卖。买卖纪录同意COMMIT和ROLLBACK准确事情。为了到达这个功效,该数据的变更前后的数值必需伴同操纵范例、买卖入手下手(工夫)等一齐被纪录上去。

  备份技能

  使用上面的列出的技能来确保你不会在每周一次的数据库备份过程当中健忘关头步骤。

  每周一次备份主数据库。假如你创立、修正大概中断一个数据库,增加新的SQLServer动静,增加大概中断毗连服务器,大概增加纪录设备,那就举行手工备份。

  天天备份一次msdb数据库。它一样平常十分小,但很主要,由于它包括了一切的SQLServer事情、操纵和企图义务。

  只要当你修正它时,才有需要备份模子数据库。

  用SQLServerAgent来布置你的备份事情的工夫表。

  假如在你的临盆(production)情况中有现成资本,备份临盆数据库到当地磁盘大概收集服务器(用统一个开关)。然后,把备份文件/设备拷贝到磁带上。在存在很多硬件妨碍(出格是在RAID体系中)的情形下,磁盘经常是无缺的(inact)。假如备份文件是在磁盘上,那末恢复时的速率会进步良多。

  备份开辟和测试数据库最少要用到SIMPLE恢复模子。

  除有企图的准时备份外,在举行未纪录的(nonlogged)批操纵(如,批拷贝)、创立索引、大概改动恢复模子后要备份用户数据库。

  假如你利用的是SIMPLE恢复模子,记着在截短(truncate)买卖纪录以后备份你的数据库。

  用文档纪录你的恢复步骤。最少要也许纪录这些步骤,注重一切的主要文件的地位。

  在截短纪录之前,也就是一切的已提交(committed)买卖从纪录中清空之前,一切的这些信息都保留在买卖纪录中。在SIMPLE恢复模子中,纪录在一个CHECKPOINT时代内截短(在SQLServer内存缓冲写道磁盘时),它是主动产生的,但也能够手动实行。这也就是SIMPLE恢复模子不撑持工夫点(point-in-time)恢复的缘故原由。在FULL和BULK_LOGGED恢复模子下,当买卖纪录被备份时,买卖纪录被截短,除非你明白指出不举行截短。

  为了备份买卖纪录,利用BACKUPLOG命令。其基础语法与BACKUP命令十分类似:

  BACKUPLOG{database}TO

  上面是怎样把买卖纪录备份到一个名为LogBackupDevice的逻辑设备上的例子:

  BACKUPTRANSACTIONNorthwindTOLogBackupDevice

  假如你不但愿截短买卖纪录,利用NO_TRUNCATE选项,以下所示:

  BACKUPTRANSACTIONNorthwindTOLogBackupDeviceWITHNO_TRUNCATE

  只是基础常识

  只管我在本文中仅仅概述了数据库恢复的基础常识,你仍是能够经由过程这些技能来找到准确的偏向。那末,为了不不用要的(丧失数据酿成的)发急,你要做到每周备份主数据库,天天备份msdb。

支持多线程,充分利用CPU资源
因胸联盟 该用户已被删除
沙发
发表于 2015-1-19 09:16:00 | 只看该作者
原来的计算字段其实和虚拟字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了计算字段的持久化,这就提高了查询的性能,但是会加重insert和update的负担。OLTP慎用。OLAP可以大规模使用。
愤怒的大鸟 该用户已被删除
板凳
发表于 2015-1-25 07:37:44 | 只看该作者
记得在最开始使用2k的时候就要用到这个功能,可惜2k没有,现在有了作解决方案的朋友会很高兴吧。
乐观 该用户已被删除
地板
发表于 2015-2-2 18:10:10 | 只看该作者
groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。
飘灵儿 该用户已被删除
5#
发表于 2015-2-8 03:59:01 | 只看该作者
varchar(max)\\\\nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。
简单生活 该用户已被删除
6#
发表于 2015-2-24 06:10:24 | 只看该作者
始终遗憾SQLServer的登陆无法分配CPU/内存占用等指标数。如果你的SQLServer给别人分配了一个只可以读几个表的权限,而这个家伙疯狂的死循环进行连接查询,会给你的系统带来很大的负担。
分手快乐 该用户已被删除
7#
发表于 2015-3-7 11:43:27 | 只看该作者
大侠们有推荐的书籍和学习方法写下吧。
admin 该用户已被删除
8#
发表于 2015-3-15 04:28:36 | 只看该作者
Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。
第二个灵魂 该用户已被删除
9#
发表于 2015-3-21 18:26:02 | 只看该作者
作了些试验,发现使用CLR的存储过程或函数在达到一定的阀值的时候,系统性能会呈指数级下滑!这是非常危险的!只使用几个可能没有问题,当一旦大规模使用会造成严重的系统性能问题!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 05:09

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表