MSSQL网页编程之Sql server数据库备份的三个恢复模子
Memory所有数据置于内存的存储引擎,拥有极高的插入,更新和查询效率。但是会占用和数据量成正比的内存空间。并且其内容会在Mysql重新启动时丢失server|备份|恢复|数据|数据库<Pstyle="TEXT-INDENT:2em">在SQLServer2000中,有没有数种备份数据库的办法。不管你的数据库有多年夜、改动是不是频仍,都有满意你的请求的备份战略。让我们看看几种能够在分歧情况下事情的基础备份战略。<Pstyle="TEXT-INDENT:2em">本文假定你有备份数据库的权限。也就是说,你要末是体系办理员,要末是db_owner大概backupadministrator。另有,我们还假定你的操纵体系供应了会见备份所必要的资本的权力,比方,会见磁盘大概磁带驱动器。<Pstyle="TEXT-INDENT:2em">从哪儿入手下手<Pstyle="TEXT-INDENT:2em">在你入手下手备份一个SQLServer数据库之前,你必要晓得该数据库利用了哪一个恢复模子。这里有三种分歧的恢复模子:FULL、BULK_LOGGED和SIMPLE。<Pstyle="TEXT-INDENT:2em">FULL恢复模子向你供应了最年夜的恢复天真性。新数据库默许利用的就是这类恢复模子。使用这类模子,你能够恢单数据库的一部分大概完整恢复。假定买卖纪录(transactionslog)还没有被损坏,你还能够在失利之前恢复出最初一次的已提交(committed)买卖。在一切的恢复模子中,这类模子利用了最多的买卖纪录空间,并稍微影响了SQLServer的功能。<Pstyle="TEXT-INDENT:2em">BULK_LOGGED恢复模子比FULL模子少了一些恢复选项,可是举行批操纵(bulkoperation)时它不会严峻影响功能。在举行某些批操纵时,因为它只需纪录操纵的了局,因而它利用了较少的纪录空间。但是,用这类模子,你不克不及恢单数据库中的特定标志,也不克不及仅仅恢单数据库的一部分。<Pstyle="TEXT-INDENT:2em">SIMPLE恢复模子是这三种模子中最简单实行的,它所占用的存储空间也最小。但是,你只能恢复出备份停止时候的数据库。<Pstyle="TEXT-INDENT:2em">为了找出你所用数据库的恢复模子,能够运转上面的命令,该命令应当前往FULL、BULK_LOGGED和SIMPLE这三个值中的某一个:<Pstyle="TEXT-INDENT:2em">SELECTdbpropertyex("database","recovery")<Pstyle="TEXT-INDENT:2em">为了改动数据库的恢复选项,运转上面的命令:<Pstyle="TEXT-INDENT:2em">ALTERDATABASEdatabasenameSETRECOVERY{FULL|SIMPLE|BULK_LOGGED}<Pstyle="TEXT-INDENT:2em">除数据以外,SQLServer备份还包含数据库纲目(schema)和数据库元数据(即数据库文件、文件组和它们的地位)。SQLServer同意在备份时用户仍然利用数据库,以是在备份时代产生的买卖也纪录到备份中往了。<Pstyle="TEXT-INDENT:2em">备份数据库<Pstyle="TEXT-INDENT:2em">为了备份数据库,你能够运转BACKUP命令。(你也能够利用SQLEnterpriseManager。)在实行命令之前晓得它的语法永久是个好主张。BACKUP命令有很多选项,它的基础语法是:<Pstyle="TEXT-INDENT:2em">BACKUPDATABASE{database_name}<Pstyle="TEXT-INDENT:2em">TO<backup_device>|<Pstyle="TEXT-INDENT:2em">backup_device能够是磁盘大概磁带――大概它也能够是一个用磁盘文件、磁带大概已定名管道暗示的逻辑上的备份设备。<Pstyle="TEXT-INDENT:2em">假如你想做一个疾速、一次性的备份,那末向上面那样利用磁盘文件:<Pstyle="TEXT-INDENT:2em">BACKUPDATABASENorthwindTODISK="c:ackupNorthwind.bak"<Pstyle="TEXT-INDENT:2em">假如你想把数据库备份到别的一台服务器上,可使用UNC名字:<Pstyle="TEXT-INDENT:2em">BACKUPDATABASENorthwindTODISK="FILESERVERSharedBackupNorthwind.bak"<Pstyle="TEXT-INDENT:2em">假如想举行有纪律、有企图的备份,就必要利用逻辑备份设备。一个逻辑备份设备能够保留多少个数据库备份并驻留在磁盘、磁带大概已定名管道上。假如你利用磁带设备,磁带驱动器必需在统一台物理服务器上。已定名管道能够使用第三方备份软件。<Pstyle="TEXT-INDENT:2em">为了创立逻辑备份设备,利用sp_addumpdevice体系保留历程。SQLEnterpriseManager也能够用来创立备份设备。命令行语法如清单A所示。清单B给出了一个在磁盘上创立逻辑备份设备的例子。<Pstyle="TEXT-INDENT:2em">当备份设备创立终了,Northwind数据库能够用上面的命令举行备份:<Pstyle="TEXT-INDENT:2em">BACKUPDATABASENorthwindTODiskBackup<Pstyle="TEXT-INDENT:2em">频仍变化的年夜数据库的备份<Pstyle="TEXT-INDENT:2em">如今,我已演示了怎样备份全部数据库。但是,它只同意你恢复备份停止时候的数据库所保留的数据。假如数据库很年夜而且频仍变化,因为工夫和空间的限定,频仍举行全数据库备份是不实际的。当数据库失利时,大概会形成大批数据丧失。<Pstyle="TEXT-INDENT:2em">在这类情形下,有两种进步可恢复性的路子,这两个路子都请求全数据库备份。并且这两种办法都请求数据库恢复模子为FULL大概BULK_LOGGED。<Pstyle="TEXT-INDENT:2em">第一种办法接纳差别数据库备份,它只捕捉并保留全数据库备份后改动的数据。因为它的文件较小并且信息简明,用它举行数据恢复的速率十分快。<Pstyle="TEXT-INDENT:2em">上面的例子在一个名为DiffBackupDevice的逻辑备份设备上创立了一个差别备份:<Pstyle="TEXT-INDENT:2em">BACKUPDATABASENorthwindTODiffBackupDeviceWITHDIFFERENTIAL<Pstyle="TEXT-INDENT:2em">第二个进步可恢复性的办法使用买卖纪录备份,恢复能够在一个特定的工夫点上完成。<Pstyle="TEXT-INDENT:2em">你大概会问这怎样大概。记着,买卖纪录的目标就是纪录产生在数据库中一切买卖。买卖纪录同意COMMIT和ROLLBACK准确事情。为了到达这个功效,该数据的变更前后的数值必需伴同操纵范例、买卖入手下手(工夫)等一齐被纪录上去。<Pstyle="TEXT-INDENT:2em">备份技能<Pstyle="TEXT-INDENT:2em">使用上面的列出的技能来确保你不会在每周一次的数据库备份过程当中健忘关头步骤。<Pstyle="TEXT-INDENT:2em">每周一次备份主数据库。假如你创立、修正大概中断一个数据库,增加新的SQLServer动静,增加大概中断毗连服务器,大概增加纪录设备,那就举行手工备份。<Pstyle="TEXT-INDENT:2em">天天备份一次msdb数据库。它一样平常十分小,但很主要,由于它包括了一切的SQLServer事情、操纵和企图义务。<Pstyle="TEXT-INDENT:2em">只要当你修正它时,才有需要备份模子数据库。<Pstyle="TEXT-INDENT:2em">用SQLServerAgent来布置你的备份事情的工夫表。<Pstyle="TEXT-INDENT:2em">假如在你的临盆(production)情况中有现成资本,备份临盆数据库到当地磁盘大概收集服务器(用统一个开关)。然后,把备份文件/设备拷贝到磁带上。在存在很多硬件妨碍(出格是在RAID体系中)的情形下,磁盘经常是无缺的(inact)。假如备份文件是在磁盘上,那末恢复时的速率会进步良多。<Pstyle="TEXT-INDENT:2em">备份开辟和测试数据库最少要用到SIMPLE恢复模子。<Pstyle="TEXT-INDENT:2em">除有企图的准时备份外,在举行未纪录的(nonlogged)批操纵(如,批拷贝)、创立索引、大概改动恢复模子后要备份用户数据库。<Pstyle="TEXT-INDENT:2em">假如你利用的是SIMPLE恢复模子,记着在截短(truncate)买卖纪录以后备份你的数据库。<Pstyle="TEXT-INDENT:2em">用文档纪录你的恢复步骤。最少要也许纪录这些步骤,注重一切的主要文件的地位。<Pstyle="TEXT-INDENT:2em">在截短纪录之前,也就是一切的已提交(committed)买卖从纪录中清空之前,一切的这些信息都保留在买卖纪录中。在SIMPLE恢复模子中,纪录在一个CHECKPOINT时代内截短(在SQLServer内存缓冲写道磁盘时),它是主动产生的,但也能够手动实行。这也就是SIMPLE恢复模子不撑持工夫点(point-in-time)恢复的缘故原由。在FULL和BULK_LOGGED恢复模子下,当买卖纪录被备份时,买卖纪录被截短,除非你明白指出不举行截短。<Pstyle="TEXT-INDENT:2em">为了备份买卖纪录,利用BACKUPLOG命令。其基础语法与BACKUP命令十分类似:<Pstyle="TEXT-INDENT:2em">BACKUPLOG{database}TO<Pstyle="TEXT-INDENT:2em">上面是怎样把买卖纪录备份到一个名为LogBackupDevice的逻辑设备上的例子:<Pstyle="TEXT-INDENT:2em">BACKUPTRANSACTIONNorthwindTOLogBackupDevice<Pstyle="TEXT-INDENT:2em">假如你不但愿截短买卖纪录,利用NO_TRUNCATE选项,以下所示:<Pstyle="TEXT-INDENT:2em">BACKUPTRANSACTIONNorthwindTOLogBackupDeviceWITHNO_TRUNCATE<Pstyle="TEXT-INDENT:2em">只是基础常识只管我在本文中仅仅概述了数据库恢复的基础常识,你仍是能够经由过程这些技能来找到准确的偏向。那末,为了不不用要的(丧失数据酿成的)发急,你要做到每周备份主数据库,天天备份msdb。
修复过程包含最多4个阶段,在下面描述。在你开始前,你应该cd到数据库目录和检查表文件的权限,确保他们可被运行mysqld的Unix用户读取(和你,因为你需要存取你正在检查的文件)。如果它拒绝你修改文件,他们也必须是可被你写入的。 以前的DTS轻盈简单。但是现在的SSIS虽然功能强大了很多,但是总是让人感觉太麻烦。看看论坛中询问SSIS的贴子就知道。做的功能太强大了,往往会有很多用户不会用了 微软对CLR作了大篇幅的宣传,这是因为数据库产品终于融入.net体系中。最开始我们也是狂喜,感觉对象数据库的一些概念可以实现了。 对递归类的树遍历很有帮助。个人感觉这个真是太棒了!阅读清晰,非常有时代感。 Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。 习惯敲命令行的朋友可能会爽一些。但是功能有限。适合机器跑不动SQLServerManagementStudio的朋友使用。 两个月啃那本sqlserver2005技术内部-存储引擎,花了几个月啃四本书 SP4包括用于以下SQLServer2000组件的程序包:Database组件(下载文件:SQL2000-KB884525-SP4-x86.EXE)更新SQLServer2000的32位Database组件,包括数据库引擎、复制、客户端连接组件及工具。有关其他信息,请参阅ReadmeSql2k32Sp4.htm。AnalysisServices组件(下载文件:SQL2000.AS-KB884525-SP4-x86.EXE)更新SQLServer2000的32位AnalysisServices。 where子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
页:
[1]