SQL Server 数据库管理维护规范_第1页
SQL Server 数据库管理维护规范_第2页
SQL Server 数据库管理维护规范_第3页
SQL Server 数据库管理维护规范_第4页
SQL Server 数据库管理维护规范_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 /20在执行SQL查询时对其进行监视,可以确定这些查询是否编写正确并生成预期的结果。解决任何问题或调试应用程序组件(如存储过程)。监视操作非常重要,因为SQLServer在动态环境中提供服务。应用程序中的数据在变化。用户需要的访问类型在变化。用户连接的方式在变化。甚至,访问SQLServer的应用程序的类型也可能在变化,而SQLServer自动管理系统级资源(如内存和磁盘空间),因此对广泛系统级手动优化的需要已降至最低。但是,管理员可以通过监视来标识性能趋势来确定是否有必要进行更改。若要有效监视SQLServer的任何组件,请按下列步骤进行操作:确定监视目标。选择相应工具。标识要监视的组件。

2、选择那些组件的度量。监视服务器。6.分析数据该文档建议使用如下方式监控数据库引擎的活动:A数据库作业使用Job定期执行存储过程,存储过程调用DMV利用这种方式,可以查询数据库引擎的很多活动,比如索引使用,会话活动,事务活动等跟踪利用Trace可以跟踪大部分的数据库引擎活动,包括登录活动,语句执行,错误DDL触发器利用DDL触发器可以监控数据库对象或者服务器对象的变化。事件通知事件通知(EVENTNOTIFICATION)可对各种Transact-SQL数据定义语言(DDL)语句和SQL跟踪事件做出响应,并将这些事件的相关信息发送到ServiceBroker服务.事件通知可以用来执行以下操作:记

3、录和检索发生在数据库上的更改或活动。执行操作以异步方式而不是同步方式响应事件。可以将事件通知用作替代DDL触发器和SQL跟踪的编程方法。事件通知在事务范围以外异步运行。因此,与DDL触发器不同,事件通知可以用于数据库应用程序中以响应事件而无需使用中间事务定义的任何资源。建议对于数据库内的DDL事件可以采用此种方式监控。A报警根据监控的结果发报警信息,可以使用第三方通讯工具(发邮件或短信)。监控结果的展现默认情况下监控结果要保持在数据库表中或者生产文件,根据实际情况可以借用一些开源框架展现监控结果,比如WebChart等7数据库维护数据库维护是根据数据库系统承载的业务量的不断增加,以及数据库容量

4、的不断增加,而不断进行性能分析,性能调整,架构分析,架构调整的过程。数据库维护一定是长期的过程,需要维护人员不断的分析调整,不断的学习研究新技术,不断的优化。7.1性能优化性能优化是一个范围很广的题目,在此不叙述相关的技术,只介绍一些优化原则。根据监控结果,至少一周进行一次性能优化(调整索引,SQL语句优化)7.2恢复或者切换演练生产环境部署测试完毕后,要根据系统实际运行情况制定恢复和切换的演练策略,比如2周进行一次附录1数据库备份,验证备份脚本CREATEPROCdbo.BackupDB(databasenamevarchar(100)=null,bcktypevarchar(100)=nu

5、ll,bckPosvarchar(8000)=null)WITHENCRYPTIONASSETNOCOUNTONIFdatabasenameisnullBEGINRAISERROR(N缺少databasename参数,该参数不能为空,16,1)RETURN-1ENDIFbcktypeisnullBEGINRAISERROR(N缺少bcktype参数,该参数不能为空(full,diff,log),16,1)RETURN-2ENDIFbckPosisnullBEGINRAISERROR(N缺少bckPos参数,不能为空备份目录,16,1)RETURN-3ENDIF(SELECTmirroring_

6、role_descFROMsys.database_mirroringWHEREdatabase_id=db_id(databasename)=MIRRORBEGINRAISERROR(N镜像数据库不允许备份,16,1)RETURN-4ENDIFdatabasename=tempdbBEGINRAISERROR(NTempdb不允许备份,16,1)RETURN-5ENDDECLAREdatevarchar(100),sqlvarchar(1000),sql1varchar(2000)SELECTdate=CONVERT(varchar(20),GETDATE(),112)+REPLACE(CO

7、NVERT(varchar(5),GETDATE(),108),:,),sql=,sql1=IF(bcktype=full)SELECTsql=BACKUPDATABASE+databasename+TODISK=N+bckPos+databasename+_Full_+date+.bak,sql1=RESTOREVERIFYONLYFROMDISK=N+bckPos+databasename+_Full_+date+.bakIF(bcktype=diff)SELECTsql=BACKUPDATABASE+databasename+TODISK=N+bckPos+databasename+_D

8、iff_+date+.bakWITHDIFFERENTIAL,sql1=RESTOREVERIFYONLYFROMDISK=N+bckPos+databasename+_Diff_+date+.bakIF(bcktype=log)SELECTsql=BACKUPLOG+databasename+TODISK=N+bckPos+databasename+_Log_+date+.trn,sql1=RESTOREVERIFYONLYFROMDISK=N+bckPos+databasename+_Log_+date+.trnIFsqlANDsql1BEGINEXEC(sql)EXEC(sql1)END

9、ELSERAISERROR(N请检查输入参数,备份目录.,16,1)SETNOCOUNTOFF附录2数据库恢复脚本CREATEPROCdbo.RestoreDB(databasenamevarchar(100)=null,bcktypebckpathislastlog)varchar(100)=null,varchar(8000)=null,bcktypebckpathislastlog)WITHENCRYPTIONASSETNOCOUNTONIFdatabasenameisnullBEGINRAISERROR(N缺少databasename参数,该参数不能为空,16,1)RETURN-1EN

10、DIFbcktypeisnull1)1)RAISERROR(N缺少bcktype参数,该参数不能为空(full,diff,log),16,RETURN-2ENDIFbckpathisnullBEGINRAISERROR(N缺少bckpath参数,请提供备份文件全路径,16,1)RETURN-3ENDDECLAREsqlvarchar(1000)IFislastlog=0BEGINIFbcktypeIN(full,diff)SELECTsql=RESTOREDATABASE+databasename+FROMDISKN+bckpath+WITHNORECOVERY,STATS=10IFbckty

11、peIN(log)SELECTsql=RESTORELOG+databasename+FROMDISK=N+bckpath+WITHNORECOVERY,STATS=10ENDELSESELECTsql=RESTORELOG+databasename+FROMDISK=N+bckpath+WITHRECOVERY,STATS=10IFsqlBEGINEXEC(sql)ENDELSERAISERROR(N请检查输入参数.,16,1)SETNOCOUNTOFF附录3清除备份文件脚本CREATEPROCdbo.DelBackup(bckPosvarchar(8000)=null,bcktypeHou

12、rsvarchar(100)=null,int=1)WITHENCRYPTIONASSETNOCOUNTONIFbcktypeisnullBEGINRAISERROR(N缺少bcktype参数,该参数不能为空(bak,trn),16,1)RETURN-1ENDIFbckPosisnullBEGINRAISERROR(N缺少bckPos参数,不能为空备份目录,16,1)RETURN-2ENDdeclareDeleteDatenvarchar(50),DateTimedatetime,sqlvarchar(1000setDateTime=DateAdd(Hour,-Hours,GetDate()s

13、etDeleteDate=(SelectCONVERT(varchar(10),DateTime,120)+T+Convert(nvarchar,DateTime,108)SETsql=EXECUTEmaster.dbo.xp_delete_file0,N+bckPos+,N+bcktype+,+DeleteDate+,1IFsqlBEGINEXEC(sql)ENDELSERAISERROR(N请检查输入参数.,16,1)SETNOCOUNTOFF附录4事件通知例子CREATEQUEUE/www.AAA.com/DBName/TabDDLQueueGOCREATESERVICE/www.AAA

14、.com/DBName/TabDDLServiceONQUEUE/www.AAA.com/DBName/TabDDLQueue( HYPERLINK /SQL/Notifications/PostEventNotification /SQL/Notifications/PostEventNotification)GOCREATEEVENTNOTIFICATIONEventNotificationTabDDLQueueONDATABASEFORDDL_DATABASE_LEVEL_EVENTS-ALTER_TABLETOSERVICE/www.AAA.com/DBName/TabDDLServi

15、ce,currentdatabaseGO附录5数据库账户申请表格数据库帐户申请表申请时间:申请人:账户有效期:(填写失效日期)公司:一级部门:二级部门申请原因:开发测试其他1客户端服务器IP(本机使用可不填):2项目名称:申请内容:数据库名称:3帐户名称(可由DBA填写):权限:所有者读写只读注:最终用户名为,项目名称_数据库名称账户名称审批项目主管签字:时间:审批意见:同意不同意技术总监签字:时间:审批意见:同意不同意实施确认时间:实施人:时间:实施情况:已完成待定关系数据库设计范式简介关系数据库中的关系必须满足一定的要求,即满足不同的范式。目前关系数据库有六种范式:第一范式(1NF)、第二

16、范式(2NF)、第三范式(3NF)、第四范式(4NF)、第五范式(5NF)和第六范式(6NF)。满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需满足第三范式(3NF)就行了。第一范式(1NF)无重复的列所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一范式(1NF)中表的每一行只包含一个实例的信息。简而

17、言之,第一范式就是无重复的列。说明:在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。第二范式(2NF)属性完全依赖于主键消除非主属性对主码的部分函数依赖第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被唯一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。例如员工信息表中加上了员工编号(emp_id)列,因为每个员工的员工编号是唯一的,因此每个员工可以被唯一区分。这个唯一属性列被称为主关键字

18、或主键、主码。第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。简而言之,第二范式就是属性完全依赖于主键。第三范式(3NF)属性不依赖于其它非主属性消除传递依赖满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部

19、门简介等信息。那么在的员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。简而言之,第三范式就是属性不依赖于其它非主属性。编辑本段范式应用实例剖析下面以一个学校的学生系统为例分析说明,这几个范式的应用。首先第一范式(1NF):数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等。在当前的任何关系数据库管理系统DBMS)中,傻瓜也不可能做出不符合第一范式的数据库,因为这些DBMS不允许你把数据库表的一列再分成二列或

20、多列。因此,你想在现有的DBMS中设计出不符合第一范式的数据库都是不可能的。首先我们确定一下要设计的内容包括那些。学号、学生姓名、年龄、性别、课程、课程学分、系别、学科成绩,系办地址、系办电话等信息。为了简单我们暂时只考虑这些字段信息。我们对于这些信息,说关心的问题有如下几个方面。学生有那些基本信息学生选了那些课,成绩是什么每个课的学分是多少学生属于那个系,系的基本信息是什么。第二范式(2NF)实例分析首先我们考虑,把所有这些信息放到一个表中(学号,学生姓名、年龄、性别、课程、课程学分、系别、学科成绩,系办地址、系办电话)下面存在如下的依赖关系。(学号)-(姓名,年龄,性别,系别,系办地址、系办电话)(课程名称)-(学分)(学号,课程)-(学科成绩)问题分析因此不满足第二范式的要求,会产生如下问题数据冗余:同一门课程由n个学生选修,学分就重复n-1次;同一个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论