




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SQL Server 数据库快照妙用如果要在一个特定的时间分析数据库中的数据,你会怎么做?例如,你想要分析晚上12点的数据,你会采取什么样的措施?最经常用到的方法,创建一个计划任务,在晚上12点的时候执行备份,将当前数据库以一个新的名字备份到服务器上,然后再开始分析这个备份数据库中的数据。这样做的问题就在于,如果这个数据库很大,那么备份它就需要花费大量的时间和磁盘空间。如果你需要在数据访问高峰期做备份的话,它花费的资源足以让你的服务器宕机。然而,在SQL Server2005中,有一项新的功能,名为数据库快照,可以让你很方便的处理类似的问题。 除了上面提到的优点,使用数据库快照还有很多其它的好处,本文将集中讨论数据库快照的优点。数据库快照是一项不太起眼的功能,这意味着,许多DBA和开发者都没有注意到它的存在。数据库快照是什么数据库快照是当前数据库的只读静态视图,不包括那些还没有提交的事务。没有提交的事务被回滚了,这样才能保证数据库的事务一致性。工作原理通常,我们使用一项功能的时候并不需要知道它的工作原理。然而,知道其工作原理将会给我们的工作带来大大的好处。一旦你创建数据库快照,快照数据库将被分配到一个空闲文件中。当原始数据页发生变化的时候,该页就会被移动到这个空闲文件。当你访问数据库快照的时候,你会访问到空闲文件,以及原始数据库上那些没有发生变化的数据页。我们可以从下图看出数据库快照是如何工作的。图一(来源:SQL Server 2005 在线手册)使用数据库快照首先,你需要创建一个数据库快照。有两种方法可以创建数据库快照。CREATEDATABASEssAdventureWorks_dbss2230ON(NAME=AdventureWorks_Data,FILENAME=C:ProgramFilesMicrosoftSQLServerMSSQL.1MSSQLDataAdventureWorks_data_2230.ss)ASSNAPSHOTOFAdventureWorks;GO在上面的例子中,AdventureWork_data_2230.ss是一个空闲文件。扩展名cc是一个任意值,不是默认也不是必须的。访问数据库快照的方法和访问一般的数据库一样:SELECT*FROMssAdventureWorks_dbss2230.dbo.Employees像访问数据库一样,我么也可以像删除一个一般数据库一样删除数据库快照。DROP DATABASE ssAdventureWorks_dbss2230你可以选择将数据库快照存储在当前数据库上,这样的话,数据库快照就成为了当前数据库的一个备份。RESTOREDATABASEAdventureWorksfromDATABASE_SNAPSHOT=ssAdventureWorks_dbss2230;GO对于数据库快照,只有唯一的选项可用,这也就意味着,我们不可以对一个数据库快照进行备份或者将它们存储于数据库快照之上。定时数据库快照定时进行数据库快照非常重要,但在SQL Server管理工具中,数据库快照节点上是没有这个直接选项的。然而,我们可以利用SQL Server代理作业新建一个定时作业,用来创建一个数据库快照。以下的脚本将分为两步来创建一个定时作业。第一步是删除数据库快照而第二步是重新创建一个数据库快照。这项作业将每隔一个小时创建一个数据库快照。USE msdbGO/* Object:Job Database snapshotScript Date: 01/29/2008 16:39:31 */BEGIN TRANSACTIONDECLARE ReturnCode INTSELECT ReturnCode = 0/* Object:JobCategory Uncategorized (Local)Script Date: 01/29/2008 16:39:31 */IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=NUncategorized (Local) AND category_class=1)BEGINEXEC ReturnCode = msdb.dbo.sp_add_category class=NJOB, type=NLOCAL, name=NUncategorized (Local)IF (ERROR 0 OR ReturnCode 0) GOTO QuitWithRollbackENDDECLARE jobId BINARY(16)EXEC ReturnCode =msdb.dbo.sp_add_job job_name=NDatabase snapshot,enabled=1,notify_level_eventlog=0,notify_level_email=0,notify_level_netsend=0,notify_level_page=0,delete_level=0,description=NNo description available.,category_name=NUncategorized (Local),owner_login_name=NDinesh-Mobdinesh, job_id = jobId OUTPUTIF (ERROR 0 OR ReturnCode 0) GOTO QuitWithRollback/* Object:Step drop database snapshotScript Date: 01/29/2008 16:39:32 */EXEC ReturnCode = msdb.dbo.sp_add_jobstep job_id=jobId, step_name=Ndrop database snapshot,step_id=1,cmdexec_success_code=0,on_success_action=1,on_success_step_id=0,on_fail_action=3,on_fail_step_id=0,retry_attempts=0,retry_interval=0,os_run_priority=0, subsystem=NTSQL,command=NDROP DATABASE ssAdventureWork_dbss2230,database_name=Nmaster,flags=0IF (ERROR 0 OR ReturnCode 0) GOTO QuitWithRollback/* Object:Step Create SnapshotScript Date: 01/29/2008 16:39:32 */EXEC ReturnCode = msdb.dbo.sp_add_jobstep job_id=jobId, step_name=NCreate Snapshot,step_id=2,cmdexec_success_code=0,on_success_action=1,on_success_step_id=0,on_fail_action=2,on_fail_step_id=0,retry_attempts=0,retry_interval=0,os_run_priority=0, subsystem=NTSQL,command=NCREATE DATABASE ssAdventureWorks_dbss2230 ON( NAME = AdventureWorks_Data, FILENAME =C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDataAdventureWorks_data_2230.ss )AS SNAPSHOT OF AdventureWorks;,database_name=Nmaster,flags=0IF (ERROR 0 OR ReturnCode 0) GOTO QuitWithRollbackEXEC ReturnCode = msdb.dbo.sp_update_job job_id = jobId, start_step_id = 2IF (ERROR 0 OR ReturnCode 0) GOTO QuitWithRollbackEXEC ReturnCode = msdb.dbo.sp_add_jobschedule job_id=jobId, name=NSchedule,enabled=1,freq_type=4,freq_interval=1,freq_subday_type=8,freq_subday_interval=1,freq_relative_interval=0,freq_recurrence_factor=0,active_start_date=20080129,active_end_date=99991231,active_start_time=0,active_end_time=235959IF (ERROR 0 OR ReturnCode 0) GOTO QuitWithRollbackEXEC ReturnCode = msdb.dbo.sp_add_jobserver job_id = jobId, server_name = N(local)IF (ERROR 0 OR ReturnCode 0) GOTO QuitWithRollbackCOMMIT TRANSACTIONGOTO EndSaveQuitWithRollback:IF (TRANCOUNT 0) ROLLBACK TRANSACTIONEndSave: 其它信息很多时候我们都知道,可以从sys.databases的系统视图中看到数据库的清单列表。数据库快照也在这个清单中。在这个视图中,有两列与数据库快照相关。一列是source_database_id,它将指名源数据库ID或者快照的源数据库。另一列是is_read_only,当一个快照数据库是一个只读数据库时,该列的值为1.SELECTNAME,database_id,source_database_id,is_read_onlyFROMsys.databases优点1.数据库快照最大的优点就在于它可以作为一个报告数据库。因为数据库快照是主数据库的一个只读副本,对一个数据库快照执行报告能够大大的减少加
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 审计与决算管理办法
- 士兵退伍前管理办法
- 商铺积分制管理办法
- 外包队安全管理办法
- 室内外装饰管理办法
- 场地押金用管理办法
- 委托经营及管理办法
- 政府非投标管理办法
- 动态口令卡管理办法
- 回收筒维护管理办法
- 2024秋八年级道德与法治上册 第二单元 公共利益 第六课 公共利益的维护教学设计 教科版
- TCCIIP 001-2024 绿色低碳园区标准
- 09.第九专题 新民主主义革命伟大胜利《慧教育》
- DBJ51-T 189-2022 四川省建设工程施工现场安全资料管理标准
- 口腔如何管理好老客户
- 《雷达原理》课件-3.3.3教学课件:相控阵雷达
- 物业服务合同(陕西省2023版)
- 2024年黄骅中小学教师招聘真题
- GB/T 44127-2024行政事业单位公物仓建设与运行指南
- 完整版交管12123驾照学法减分复习通关秘籍题库及答案(名师系列)
- 水利工程(水电站)安全生产风险分级管控体系方案全套资料(2021-2022版)
评论
0/150
提交评论