修改表名,修改表名,列名
修改表名,列名,在Google上搜了很久没搜到,很多是错的,运行不了,下面是自己通过搜索到的知识综合测试出来的,不容易哦:修改表名:execsp_rename'旧表名','新表名'修改列名:execsp_rename'sheet.IP地址','ADRess'execsp_rename'表名.旧列名','新列
sqlserver创建备用管理员和只读用户
--创建新的登录名usemastergoexecsp_addlogin@loginame='mysa',@passwd='11'goexecsp_addlogin@loginame='read',@passwd='11'go--修改密码--execsp_password@old=null,@new='sa',@loginame='sa'--execsp_password@old=null,@new='11',@loginame='mysa'--execsp_password@old=null,@new='11',@loginame='read'----------------------------------------------------------------------服务器角色--使用户属于固定服务器角色sysadminusemastergoexecsp_addsrvrolemember@loginame='mysa',@rolename='sysadmin'--固定服务器角色go----------------------------------------------------------------------数据库角色--在当前数据库创建新的MicrosoftSQLServer角色usemastergoexecsp_addrole@rolename='SelectExec',@ownername='dbo'go--使用户属于固定数据库角色db_datareaderexecsp_grantdbaccess@loginame='read'go
--使用户read只能执行select语句,不能执行into,create,delete,drop等语句,--用read用户查询数据库比较安全execsp_addrolemember@rolename='db_datareader',@membername='read'go
execsp_addrolemember@rolename='SelectExec',@membername='read'go------------------------------------------------------------------------------------------------------------------------------------------数据库角色usenorthwindgo--在当前数据库创建新的MicrosoftSQLServer角色execsp_addrole@rolename='SelectExec',@ownername='dbo'go--使用户属于固定数据库角色db_datareaderexecsp_grantdbaccess@loginame='read'goexecsp_addrolemember@rolename='db_datareader',@membername='read'goexecsp_addrolemember@rolename='SelectExec',@membername='read'go-----------------------------------------------------------------------数据库角色usepubsgo--在当前数据库创建新的MicrosoftSQLServer角色execsp_addrole@rolename='SelectExec',@ownername='dbo'go--使用户属于固定数据库角色db_datareaderexecsp_grantdbaccess@loginame='read'goexecsp_addrolemember@rolename='db_datareader',@membername='read'goexecsp_addrolemember@rolename='SelectExec',@membername='read'go----------------------------------------------------------------------
---------------------------------------------------------------------/*******************--修改密码--execsp_password@old=null,@new='sa',@loginame='sa'--execsp_password@old=null,@new='11',@loginame='mysa'--execsp_password@old=null,@new='11',@loginame='read'--查看SQL-server登录名UsemasterSelectname,Password,dbnamefromsysloginsSelect*fromsyslogins--显示数据库用户名usemasterexecsp_helpuser--更改用户的默认数据库execsp_defaultdb@loginame='sa',@defdb='master'execsp_defaultdb@loginame='mysa',@defdb='master'execsp_defaultdb@loginame='read',@defdb='master'--数据库的对象权限--使角色SelectExec可以执行存储过程usepubsgrantexeconzuc_pr_plu8VSplu13toSelectExecgrantexeconzuc_pr_MerchandiseManageAttributetoSelectExecgrantexeconzuc_pr_DM_SalequantitySaleamtDmsEndquantitytoSelectExecgrantexeconzuc_pr_Duiduan_SalequantitySaleamtDmsEndquantitytoSelectExecgrantexeconzuc_pr_jiajifenORjianjifentoSelectExecgrantexeconzuc_pr_Endquantity_0_Sale_Order_ChkreceivetoSelectExec--撤消--revokeexeconzuc_pro_plu8VSplu13fromSelectExec--经常检查带有空密码的帐户UsemasterSelectname,Passwordfromsysloginswherepasswordisnullorderbyname
--检查所有不需要'sa'权限的存储过程和扩展存储过程访问权限:UsemasterSelectsysobjects.nameFromsysobjects,sysprotectsWheresysprotects.uid=0ANDxtypeIN('X','P')ANDsysobjects.id=sysprotects.idOrderbyname
彻底删除SQLServer:hkey_local_machine\software\Microsoft\MSSQLServerhkey_local_machine\software\Microsoft\MicrosoftSQLServerhkey_current_user\software\Microsoft\MicrosoftSQLServerhkey_current_user\software\Microsoft\MSSQLServerhkey_local_machine\system\currentcontrolset\control\sessionmanager\pendingfilerenameoperations
【简介】SQL是英文StructuredQueryLanguage的缩写,意思为结构化查询语言。SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。目前,绝大多数流行的关系型数据库管理系统,如Oracle,Sybase,MicrosoftSQLServer,Access等都采用了SQL语言标准。虽然很多数据库都对SQL语句进行了再开发和扩展,但是包括Select,Insert,Update,Delete,Create,以及Drop在内的标准的SQL命令仍然可以被用来完成几乎所有的数据库操作。下面,我们就来详细介绍一下SQL语言的基本知识。一个典型的关系型数据库通常由一个或多个被称作表格的对象组成。数据库中的所有数据或信息都被保存在这些数据库表格中。数据库中的每一个表格都具有自己唯一的表格名称,都是由行和列组成,其中每一列包括了该列名称,数据类型,以及列的其它属性等信息,而行则具体包含某一列的记录或数据。以下,是一个名为天气的数据库表格的实例。QUOTE:城市最高气温最低气温北京105上海158天津82重庆2013该表格中“城市”,“最高气温”和“最低气温”就是三个不同的列,而表格中的每一行则包含了具体的表格数据。数据查询
在众多的SQL命令中,select语句应该算是使用最频繁的。Select语句主要被用来对数据库进行查询并返回符合用户查询标准的结果数据。Select语句的语法格式如下:QUOTE:selectcolumn1[,column2,etc]fromtablename[wherecondition];([]表示可选项)select语句中位于select关键词之后的列名用来决定那些列将作为查询结果返回。用户可以按照自己的需要选择任意列,还可以使用通配符“*”来设定返回表格中的所有列。select语句中位于from关键词之后的表格名称用来决定将要进行查询操作的目标表格。Select语句中的where可选从句用来规定哪些数据值或哪些行将被作为查询结果返回或显示。在where条件从句中可以使用以下一些运算符来设定查询标准:QUOTE:=等于>大于<小于>=大于等于<=小于等于<>不等于除了上面所提到的运算符外,LIKE运算符在where条件从句中也非常重要。LIKE运算符的功能非常强大,通过使用LIKE运算符可以设定只选择与用户规定格式相同的记录。此外,我们还可以使用通配符“%”用来代替任何字符串。举例如下:QUOTE:selectfirstname,lastname,cityfromemployeewherefirstnameLIKE‘E%’;(注意,字符串必须被包含在单括号内)上述SQL语句将会查询所有名称以E开头的。或者,通过如下语句:
QUOTE:select*fromemployeewherefirstname=‘May’;查询所有名称为May的行。
SQL语言中的createtable语句被用来建立新的数据库表格。Createtable语句的使用格式如下:QUOTE:
createtabletablename(column1datatype,column2datatype,column3datatype);如果用户希望在建立新表格时规定列的限制条件,可以使用可选的条件选项:QUOTE:createtabletablename(column1datatype[constraint],column2datatype[constraint],column3datatype[constraint]);举例如下:QUOTE:createtableemployee(firstnamevarchar(15),lastnamevarchar(20),agenumber(3),addressvarchar(30),
cityvarchar(20));简单来说,创建新表格时,在关键词createtable后面加入所要建立的表格的名称,然后在括号内顺次设定各列的名称,数据类型,以及可选的限制条件等。注意,所有的SQL语句在结尾处都要使用“;”符号。使用SQL语句创建的数据库表格和表格中列的名称必须以字母开头,后面可以使用字母,数字或下划线,名称的长度不能超过30个字符。注意,用户在选择表格名称时不要使用SQL语言中的保留关键词,如select,create,insert等,作为表格或列的名称。数据类型用来设定某一个具体列中数据的类型。例如,在列中只能采用varchar或char的数据类型,而不能使用number的数据类型。SQL语言中较为常用的数据类型为:QUOTE:char(size):固定长度字符串,其中括号中的size用来设定字符串的最大长度。Char类型的最大长度为255字节。varchar(size):可变长度字符串,最大长度由size设定。number(size):数字类型,其中数字的最大位数由size设定。Date:日期类型。number(size,d):数字类型,size决定该数字总的最大位数,而d则用于设定该数字在小数点后的位数。最后,在创建新表格时需要注意的一点就是表格中列的限制条件。所谓限制条件就是当向特定列输入数据时所必须遵守的规则。例如,unique这一限制条件要求某一列中不能存在两个值相同的记录,所有记录的值都必须是唯一的。除unique之外,较为常用的列的限制条件还包括notnull和primarykey等。null用来规定表格中某一列的值不能为空。NotPrimarykey则为表格中的所有记录规定了唯一的标识符。向表格中插入数据SQL语言使用insert语句向数据库表格中插入或添加新的数据行。Insert语句的使用格式如下:QUOTE:insertintotablename(first_column,...last_column)values(first_value,...last_value);例如:[/quote]
insertintoemployee(firstname,lastname,age,address,city)values(‘Li’,‘Ming’,45,‘No.77ChanganRoad’,‘Beijing”);[/quote]简单来说,当向数据库表格中添加新记录时,在关键词insertinto后面输入所要添加的表格名称,然后在括号中列出将要添加新值的列的名称。最后,在关键词values的后面按照前面输入的列的顺序对应的输入所有要添加的记录值。更新记录SQL语言使用update语句更新或修改满足规定条件的现有记录。Update语句的格式为:QUOTE:updatetablenamesetcolumnname=newvalue[,nextcolumn=newvalue2...]wherecolumnnameOPERATORvalue[andorcolumnOPERATORvalue];例如:QUOTE:updateemployeesetage=age+1wherefirst_name=‘Mary’andlast_name=‘Williams’;使用update语句时,关键一点就是要设定好用于进行判断的where条件从句。删除记录SQL语言使用delete语句删除数据库表格中的行或记录。Delete语句的格式为:QUOTE:deletefromtablenamewherecolumnnameOPERATORvalue[andorcolumnOPERATORvalue];例如:QUOTE:deletefromemployee
wherelastname=May;简单来说,当需要删除某一行或某个记录时,在deletefrom关键词之后输入表格名称,然后在where从句中设定删除记录的判断条件。注意,如果用户在使用delete语句时不设定where从句,则表格中的所有记录将全部被删除。删除数据库表格在SQL语言中使用droptable命令删除某个表格以及该表格中的所有记录。Droptable命令的使用格式为:QUOTE:droptabletablename;例如:QUOTE:droptableemployee;如果用户希望将某个数据库表格完全删除,只需要在droptable命令后输入希望删除的表格名称即可。Droptable命令的作用与删除表格中的所有记录不同。删除表格中的全部记录之后,该表格仍然存在,而且表格中列的信息不会改变。而使用droptable命令则会将整个数据库表格的所有信息全部删除。以上,我们对SQL语言主要的命令和语句进行了较为详细的介绍。应该说SQL语句的语法结构和风格还是相当简单和直观的,只要用户结合实践多加练习,一定会在短期内迅速掌握。SELECT…FROM为方便讲解,我们在数据库中创建名为Store_Information的如下数据表。QUOTE:Store_InformationStore_NameSalesDateLosAngeles$1500Jan-10-2000SanDiego$250Jan-11-2000LosAngeles
$300Jan-12-2000Boston$700Jan-12-2000SQL语言中用于数据库查询的最简单的命令就是SELECT…FROM,语法格式为:QUOTE:SELECT"column_name"FROM"table_name"例如,如果我们希望查询Store_Information数据表中所有的商店名称时,可以使用如下命令:QUOTE:
SELECTstore_nameFROMStore_Information查询结果显示为:QUOTE:Store_NameLosAngelesSanDiegoLosAngelesBoston如果用户希望一次查询多个字段,可以将所要查询的字段名称依次加入SELECT关键字之后,中间用“,”隔开即可。DISTINCTSELECT关键字支持用户查询数据表中指定字段的所有数据,但是这样有时就会不可避免的出现重复信息。如果用户希望只查询那些具有不同记录值的信息的话,可以使用SQL语言的DISTINCT关键字。语法格式如下:QUOTE:SELECTDISTINCT"column_name"FROM"table_name"例如,我们可以使用以下命令查询Store_Information数据表具有不同记录值的所有记录。QUOTE:
SELECTDISTINCTStore_NameFROMStore_Information查询结果如下:QUOTE:Store_NameLosAngelesSanDiegoBostonWHERE除了选择具有不同记录值的记录之外,有时我们可能还会需要根据某些条件对数据库中的数据进行查询。例如,我们可能需要查询Store_Information数据表中销售额超过1000美圆的商店。为此,我们可以使用SQL语言的WHERE关键字设定查询条件。语法格式如下:QUOTE:SELECT"column_name"FROM"table_name"WHERE"condition"由此,我们可以使用如下命令查询销售额超过1000美圆的商店信息:QUOTE:SELECTstore_nameFROMStore_InformationWHERESales>1000查询结果显示为:QUOTE:store_nameLosAngeles运算函数现在,我们已经了解到在使用SQL语言进行数据库查询操作时可以通过对数值的判断设定灵活的查询条件。为了增强对运算的支持能力,SQL提供了众多实用的运算函数供广大用户使用。例如,我们可以直接在SQL命令中调用SUM或AVG这两个分别用于计算总数和平均数的函数。语法格式如下:QUOTE:SELECT"functiontype"("column_name")FROM"table_name"
如果我们希望查询Store_Information数据表中所有商店的总销售额的话,可以使用如下命令:QUOTE:SELECTSUM(Sales)FROMStore_Information查询结果显示为:QUOTE:SUM(Sales)$2750COUNT除了SUM和AVG函数之外,COUNT函数是SQL语言中另一个较为常用的运算函数。COUNT函数可以用来计算数据表中指定字段所包含的记录数目。语法格式为:QUOTE:SELECTCOUNT("column_name")FROM"table_name"例如,如果我们希望查询Store_Information数据表中的有关商店的记录条数时,可以使用如下命令:QUOTE:
SELECTCOUNT(store_name)FROMStore_Information查询结果显示为:QUOTE:Count(store_name)4COUNT函数可以和DISTINCT关键字一起使用从而可以查询数据表中指定字段中所有具有不同记录值的记录数目。例如,如果我们希望查询Store_Information数据表中不同商店的数目时,可以使用如下命令:QUOTE:
SELECTCOUNT(DISTINCTstore_name)
FROMStore_Information查询结果显示为:QUOTE:Count(DISTINCTstore_name)3GROUPBY下面我们来进一步看一下SQL语言中的集合函数。上文中,我们曾使用SUM函数计算所有商店的销售总额,如果我们希望计算每一家商店各自的总销售额时该怎么办呢?要实现这一目的我们需要做两件事:首先,我们需要查询商店名称和销售额两个字段;然后,我们使用SQL语言的GROUPBY命令将销售额按照不同的商店进行分组,从而计算出不同商店的销售总额。GROUPBY命令的语法格式为:QUOTE:SELECT"column_name1",SUM("column_name2")FROM"table_name"GROUPBY"column_name1"我们可以使用如下命令实现上述查询目的:QUOTE:SELECTstore_name,SUM(Sales)FROMStore_InformationGROUPBYstore_name查询结果显示为:QUOTE:store_nameSUM(Sales)LosAngeles$1800SanDiego$250Boston$700小注:GROUPBY关键字一般应用于同时查询多个字段并对字段进行算术运算的SQL命令中。HAVING
用户在使用SQL语言的过程中可能希望解决的另一个问题就是对由sum或其它集合函数运算结果的输出进行限制。例如,我们可能只希望看到Store_Information数据表中销售总额超过1500美圆的商店的信息,这时我们就需要使用HAVING从句。语法格式为:QUOTE:SELECT"column_name1",SUM("column_name2")FROM"table_name"GROUPBY"column_name1"HAVING(arithematicfunctioncondition)(GROUPBY从句可选)由此,我们可以使用如下命令实现上述查询目的:QUOTE:SELECTstore_name,SUM(sales)FROMStore_InformationGROUPBYstore_nameHAVINGSUM(sales)>1500查询结果显示为:QUOTE:store_nameSUM(Sales)LosAngeles$1800小注:SQL语言中设定集合函数的查询条件时使用HAVING从句而不是WHERE从句。通常情况下,HAVING从句被放置在SQL命令的结尾处。ALIAS下面,我们重点介绍一下如何在SQL命令中设定别名。SQL语言中一般使用两种类型的别名,分别为字段别名和数据表别名。简单的说,使用字段别名可以帮助我们有效的组织查询的输出结果。例如,上文所列举的多个实例中,当我们计算商店销售总额时,显示结果中就会出现SUM(sales)。虽然SUM(sales)并不会对我们理解查询结果带来不便,但是如果我们需要在查询中使用多项复杂运算时,显
示结果就不会这么直观了。如果这时我们使用字段别名就会极大的提高查询结果的可读性。对于数据表别名,我们可以通过将别名直接放置在FROM从句中数据表名称的后面设定。数据表别名在我们下面将要讲述的连接多个数据表进行查询的操作中极为有用。字段和数据表别名的语法格式如下:QUOTE:SELECT"table_alias"."column_name1""column_alias"FROM"table_name""table_alias"即别名都直接放置在各自对应名称的后面,中间用空格分开。以Store_Information数据表为例,我们可以在GROUPBY一节中所使用的SQL命令中设置如下字段和数据表别名:QUOTE:SELECTA1.store_nameStore,SUM(Sales)"TotalSales"FROMStore_InformationA1GROUPBYA1.store_name查询结果显示为:QUOTE:StoreTotalSalesLosAngeles$1800SanDiego$250Boston$700连接多个数据表最后,我们来看一下如果使用SQL语言连接多个数据表,实现对多个数据表的查询。为方便讲解,我们在数据库中分别创建了两个名为Store_Information和Region的数据表。QUOTE:Store_InformationStore_NameSalesDate
LosAngeles$1500Jan-10-2000SanDiego$250Jan-11-2000LosAngeles$300Jan-12-2000Boston$700Jan-12-2000
QUOTE:RegionRegion_NameStore_NameEastBostonEastNewYorkWestLosAngelesWestSanDiego下面,我们就来看一下通过数据表的连接实现按不同区域查询销售额。我们注意到在名为Region的数据表中包含区域和商店两个字段信息,而在名为Store_Information的数据表中则包含每一家商店的销售信息。因此,为了得到按区域划分的销售信息,我们需要将两个不同数据表的信息结合在一起进行查询。通过对上述两个数据表的分析,我们发现每个数据表中都包含一个名为Store_Name的字段,因此,我们可以使用如下命令实现查询目的:QUOTE:SELECTA1.region_nameREGION,SUM(A2.Sales)SALES
FROMGeographyA1,Store_InformationA2WHEREA1.store_name=A2.store_nameGROUPBYA1.region_name查询结果显示为:QUOTE:REGIONSALESEast$700West$2050说明:上述查询命令的前两行用于指定所要查询的目标字段,分别为Region数据表中的Region_Name字段和Store_Information数据表中Sales字段的记录值总数。这里,我们设定两个字段的别名分别为REGION和SALES,两个数据表的别名分别为A1和A2。如果我们只使用字段别名而不设定数据表别名的话,上述SQL命令的第一行就变成如下形式:QUOTE:SELECTRegion.Region_NameREGION,SUM(Store_Information.Sales)SALES由此我们可以看出有效的使用数据表别名,可以极大的简化对多个数据表进行操作的SQL命令。上述查询命令的第3行为WHERE从句,正是该从句设定了两个数据表的连接条件。因为我们希望确保Region数据表中的Store_Name字段能够与Store_Information数据表中的同名字段相对应,所以我们规定两个字段的记录值应当相等。在连接多个数据表时,一定要准确设定数据表的连接条件,如果WHERE从句设定不正确,则可能导致查询结果中出现众多不相关的数据
Server“数据库维护计划数据库维护计划”解SQLServer“数据库维护计划”
作为网管员,无论其管理的网络的规模是大还是小,在日常的管理中除了维护网络平稳运行、及时排除网络故障、保护网络安全等工作以外,备份网络中关键数据也是其中的一个非常非常重要的工作环节。网络中的各种故障无非就分两种:软件故障和硬件故障。对于“硬件故障”可以通过维修或更换硬件设备得到及时解决;对于“软件故障”则可以通过重新安装或升级软件、重做网络或应用软件系统等方法及时解决,而且用此方法来解决网络故障大多需要一些基础的、关键的数据支持才能得以恢复正常。但是,网络中诸如此类的关键数据(特别是“应用软件系统”中的关键数据)的损坏或丢失,绝大部分是无法恢复和弥补的。即使可以恢复部分数据,弥补它们所花费的代价(诸如时间、人力、财力、物力等)都可能远远超出了公司的承受能力。
所以说,注重数据的备份工作是网管员日常管理工作中的必须时刻关注的一项任务,也是必须周期性重复操作的一项工作。目录现行备份策略具体实现步骤结束语现行备份策略我公司在组建局域网时,考虑到商业企业的特点,仔细考量了购、销、存三大环节中发生的各种数据及其存储问题后,选定了以Windows2000Server为操作系统,SQLServer2000为数据库平台来搭建局域网的应用系统的软件平台,以网线为载体将购、销、存等核心部门的计算机通过局域网平台紧密地连接起来。这样,各个核心部门每天的任何一笔业务都及时地、动态地存储到公司局域网的核心Dell服务器上的SQLServer2000数据库中,并以此为基础平台向各方提供所需的各种数据服务。因此,自公司局域网开始正式运作之日起,作为网管员的我就非常注重对局域网中的关键数据——特别是这些业务数据的备份工作。同时,我也希望备份数据的软件能够实现以下自动功能。功能1:能够在每天的某个固定的时刻(如夜晚0:00:00,当然这个时间是可以自主设定的)对包含所有业务数据库在内的所有关键数据库进行一次“完全备份”。功能2:能够在每天的0:00:00至23:59:59这段时间内,每间隔1个小时对功能1中所涉及到的各个数据库的事务日志进行“差异备份”。功能3:每天都能够保留功能1和功能2中所生成的数据库和事务日志的最近两天的备份(即:前一天的和前两天的),而且能够自动地删除久于两天前的所有数据库和事务日志的备份。功能4:定期(如每个星期一次)将所有关键数据库的完全备份的副本备份到磁带或其它存储介质上(这部分工作可能需要手工完成)。于是,围绕这些功能的实现,在日常管理工作中,我尽可能地尝试了各种备份数据的软件和方法,Windows2000自带的“备份”工具、如SQLServer2000自带的“备份”功能等。这些备份软件和方法的功能各有千秋,但是都存在以下缺点:一种就是需要人工干预,无法实现自动备份(如Windows2000自带的“备份”工具)。如果采用这种方法,就必须时刻人工手动备份,万一哪天因为出差或其它原因没有进行备份,而这时又出现服务器或数据故障的话,那麻烦就大了。
另一种就是能够实现自动备份,但是旧的备份不能被自动地删除(如SQLServer2000自带的“备份”功能)。如果采取这种方法,就必须及时地手工删除旧的备份,否则再大的硬盘也会迅速地被用完。在相互比较后,我还是决定采用第二种——SQLServer2000自带的“备份”功能对关键数据库进行备份,因为它能够实现“自动备份”功能,比第一种略强。所以,在一段时期内,我每天上班后的第一件事就是先检查一下备份目录下各种数据的新的备份,然后手工删除旧的备份数据。这种做法一度让我很是苦恼。一天,我在利用SQLServer2000的“帮助”查询某个Transact-SQL语句的语义解释时无意中阅读到“自动化管理任务”的内容。从头到尾地仔细阅读后,我不由得眼睛一亮,原来SQLServer2000本身自带了一个能够实现我的备份要求的、强大的功能——“数据库维护计划”。于是我立刻按照这部分内容的提示,以一个数据库为试验样本一步一步地操作,成功地创建了一个数据库维护计划。经过一个星期的试运行,这个计划果然能够实现自动备份调度,以及自动删除旧的数据备份,完全能够满足我的备份要求。从那时起,我就利用SQLServer2000的“数据库维护计划”备份所有关键数据库,而且严格地、定期地执行功能4,每个星期五将完全备份的数据库备份到磁带和局域网中其它客户机(主要是用于网络管理的网管PC)的硬盘上。这样做的目的是,能同时异地保存三份相同的备份,减少故障带来的损失。而且,通过SQLServer2000的“数据库维护计划”,我现在能够较轻松地备份所需各种数据,方便地管理其备份,相应地减少了日常工作量,也减轻了部分工作压力。
点评回复引用kedefu20022007/7/616:46
具体实现步骤目录第一步:Server“企业管理器企业管理器”第一步:打开SQLServer“企业管理器”窗体第二步:找到“数据库维护计划”第二步:找到“数据库维护计划”功能第三步:创建“数据库维护计划”第三步:创建“数据库维护计划”第四步:维护和管理“数据库维护计划护计划”第四步:维护和管理“数据库维护计划”第五步:代理以便执行“作业”第五步:启动SQLServer2000代理以便执行“作业”第六步:第六步:检查结果
“数据库维护计划”功能在SQLServer2000的“企业管理器”中可以找到。说明:1.以下操作是在服务器的Windows2000Server上进行操作的。在Window9X系统上操作相同。2.由于SQLServer2000执行备份时将产生许多文件(特别是在进行事务日志备份时),所以建议按数据库名称分别建立独立的备份目录进行存储。3.以下所有操作过程当中一般不会对数据库的使用产生影响。第一步:Server“企业管理器企业管理器”第一步:打开SQLServer“企业管理器”窗体用鼠标单击任务栏上的“开始”按钮中的“程序(P)”菜单下的“MicrosoftSQLServer”子菜单中的“企业管理器”菜单项,即可打开SQLServer2000的“企业管理器”窗体。第二步:找到“数据库维护计划”第二步:找到“数据库维护计划”功能在“企业管理器”窗体中左侧的树型选项卡中,用鼠标单击“+”图标扩展开“控制台根目录”下的“MicrosoftSQLServers”,可以看到其下有一个“SQLServer组”;接着继续扩展开“SQLServer组”,此时可以看到其下出现了服务器的名称(图1中的“JXNC-SERVER”就是我的服务器的名称);再继续扩展开此服务器,可以看到其下列出了诸如“数据库”、“数据转换服务”等项目;最后单击“管理”项目,可以看到其下存在一个“数据库维护计划”(如图1)。
图1
单击“数据库维护计划”项目,在“企业管理器”窗口右侧将会显示出已经存在的维护计划项目。每个维护计划均包括以下项目:1.名称:就是维护计划的名称。此名称可以自定义,中英文皆可。2.数据库:就是维护计划所进行维护的数据库的名称。因为一个维护计划允许同时维护多个数据库,所以此处可以显示出多个数据库的名称(在图1中可以看到名为“系统数据库备份”的数据库维护计划中的“数据库”就包括三个数据库:master、model和msdb)。3.服务器:也就是维护计划所维护的数据库所处的服务器的名称。“(local)”表示是本地服务器。4.对策:是指维护计划所需要进行的具体维护工作的内容。图1中有3个“数据库维护计划”均为“数据库备份,事务日志备份”,它的含义就是这些维护计划中同时对所指定的数据库进行“数据库”和“事务日志”的备份。
第三步:创建数据库维护计划数据库维护计划”第三步:创建“数据库维护计划鼠标右击“数据库维护计划”项目,选择“新建维护计划(P)”功能,将打开“数据库维护计划向导”窗体,依照此向导能够创建一个新的“数据库维护计划”。步骤1:单击“下一步(N)”按钮,打开“选择数据库”窗体(如图2)。在此窗体中可以选定一个或多个的数据库作为操作对象。为了叙述方便,我在此只选择了一个数据库“regie”。
图2步骤2:单击图2中的“下一步(N)”按钮,打开“更新数据优化信息”窗体(如图3)。
图3在此窗体中可以对数据库中的数据和索引重新进行组织,以及能够设定在满足一定条件的情况下,维护计划自动删除数据库中的未使用的空间,以便提高性能。但要注意的是,在此窗体中,只要选定了“重新组织数据和索引页[R]”复选框,“更新查询优化器所使用的统计。示例[D]”复选框将失效(变成灰色,不能选择)。而且“重新组织数据和索引页[R]”复选框和“从数据库文件中删除未使用的空间[M]”复选框二者只要有一个被选中,其下的“调度[S]”功能才有效。单击“更改[C]”按钮可以对“调度”进行自定义。各位读者可以根据自身情况决定是否选用其中的功能。当然也可以通过单击“帮助”按钮来查看各功能的具体含义。在此窗体中能够便捷地设定每项作业的持续运行时间和运行的频率。完成自己的设置后,一定要选定右上角的“启用调度[B]”复选框,这样一个作业调度才算真正完成了。步骤3:单击图3中的“下一步(N)”按钮,打开“检查数据库完整性”窗体。在此窗体中可以设定维护计划在备份数据库前自动检查数据库的完整性,以便检测由于硬件或软件错误而导致数据的不一致。在此窗体中只有先选定了“检查数据库完整性[H]”复选框,其下的“备份之前执行这些检查[R]”和“调度[S]”功能才有效。单击“更改[C]”按钮可以对“调度”进行自定义。各位读者可以自主决定,较好的一种做法就是选中“检查数据库完整性[H]”复选框(推荐,因为有可能会修正一些错误)。步骤4:在“检查数据库完整性”窗体中的“下一步(N)”按钮,打开“指定数据库备份计划”窗体。如需对数据库进行备份,则必须选定“作为维护计划的一部分来备份数据库[A]”复选框,而且必须指定存储备份文件的位置:磁带[P]或磁盘[K]。如果选择“磁盘[K]”作为数据库备份的位置,设定“调度”后单击“下一步(N)”按钮则显示“指定备份磁盘目录”窗体(如图4)。
图4在图4中,可以具体指定存储备份文件的目录(可以使用默认的目录,也可自定义)、备份文件扩展名,而且能够指示备份计划自动地删除早于某个时间(图4中设定的是“2天”,也就是说两天前的所有备份文件将被自动地删除,只留下最近两天的备份)的备份文件。而图4中的“为每个数据库创建子目录[C]”功能只是在步骤1中选择了多个数据库时才有用,对于一个数据库作用不大。设定后,单击“下一步(N)”按钮则显示“指定事务日志备份计划”窗体。如果选择“磁带[P]”作为数据库备份的位置,设定“调度”后单击“下一步(N)”按钮则直接显示“指定事务日志备份计划”窗体。步骤5:指定“事务日志备份计划”的过程与步骤4的过程完全相同,只是在设定“调度”上稍有差别(因为我的要求是数据库每天备份一次,事务日志每1小时备份一次)。步骤6:对事务日志的备份计划全部设定后,单击“下一步(N)”按钮则显示“要生成的报表”窗体。在此窗体中可以指定用于存放整个备份计划执行过程中的日志的目录。设定过程与图4的操作及其相似。
图5步骤7:完成步骤6后,单击“下一步(N)”按钮则显示“维护计划历史纪录”窗体。在此窗体中可以指定如何存储此维护计划的历史纪录(是存放在“本地服务器”上,还是在“远程服务器”上),而且通过指定表中的行数可以限定历史纪录的存储大小。步骤8:完成步骤7后,单击“下一步(N)”按钮则显示“正在完成数据库维护计划向导”窗体(如图5)。在此窗体中可以自定义一个“计划名[P]”(推荐,这样便于管理和识别),当然也可使用默认的“计划名[P]”。而且还可以通过对“计划名[P]”下的文本框中的内容进行确认,如有误,则可通过单击窗体中的“上一步[B]”按钮退回到相应的窗体进行修改。步骤9:完成步骤8后,单击“完成”按钮,则显示“维护计划已创建成功。”的提示框,再单击“确定”按钮即成功地设定了一个新的数据库维护计划。从图6中可以看到,已经成功的创建了一个新的数据库维护计划——“regie备份”。
第四步:维护和管理数据库维护计划数据库维护计划”第四步:维护和管理“数据库维护计划第三步完成后,对各个“数据库维护计划”的日常维护和管理都非常方便,只需要双击“数据库维护计划”即可对第三步中所涉及的内容进行变更、修正。
图6如图6所示,鼠标右击“regie备份”,单击“属性[R]”,或者直接双击“regie备份”,打开“数据库维护计划”窗体。在此窗体中集成了第三步中涉及到的所有功能,每项功能都能任意修改,修改过程与第三步中的相应步骤一样。但需要说明的是,在设定图7中的“报表”选项卡下的“文本报表”中的“删除早于此时间的文本报表文件[F]”选项时,也就是第三步中的步骤6中的内容,无论您将其设定成“分钟”、“小时”、“天”,还是“月”,创建成功后都将被自动地更正为“周”,而且以后无论如何修改,保存后再去查看时它仍将显示为“周”,但不意味着其它选项无效,其它选项仍然有效。
图7第五步:代理以便执行“作业作业”第五步:启动SQLServer2000代理以便执行作业完成第三步后,还需启动SQLServer2000Agent(代理),以便执行“数据库维护计划”作业。与展开SQLServer2000“数据库维护计划”的步骤一样,在“管理”项目中,可以发现存在一个“SQLServer代理”(如图8)。
图8单击“SQLServer代理”下的“作业”子菜单,在“企业管理器”窗口右侧将会显示出已经存在的作业项目(在图8中可以看到已经存在17个作业项目)。每个作业项目均包括以下数据列:1.名称:当然是指作业的名称,可以自定义,中英文皆可。为了理解方便,建议用中英文结合。每当新建立一个“数据库维护计划”,将自动生成以下默认名称的作业:(1)当新建的“数据库维护计划”中设定了“备份数据库”功能时,将生成默认名为“DB维护计划‘******’的DB备份作业”的作业。(2)当新建的“数据库维护计划”中设定了“备份事务日志”功能时将生成默认名为“DB维护计划‘******’的事务日志备份作业(多服务器)”的作业。以上(1)和(2)中的“******”处将显示“数据库维护计划”中的“计划名”(也就是第三步步骤8中设定的“计划名”)。2.分类:指明该作业当前所属的类别。缺省值为“[未分类(本地)]”。3.启用:指明该作业是否处于“启用”状态。4.可运行:指明该作业是否处于“可运行”状态。
5.已调度:指明该作业是否处于“已调度”状态。6.状态:指明该作业当前的运行状态—不在运行、正在运行。7.上次运行状态(开始日期):显示最近一次运行该作业后的状态(“已成功”、“失败”,还是“未知”),和运行时的日期和时间。8.下次运行日期:指明下一次运行该作业的日期和时间。如图8所示,鼠标右击“regie完全备份”作业,单击“属性[R]”,或者直接双击“regie完全备份”作业,打开作业的“属性”窗体。在此窗体中集成了该作业的详细的配置项。每个配置项都能任意修改。“属性”窗体中有四个选项卡:◆常规:在此选项卡中可以重新设定作业名称(“名称[N]”文本框)、修改作业的分类(“分类[Y]”下拉框)、指定作业的所有者(“所有者[W]”下拉框)、简单地对作业进行描述(“描述[R]”文本框),以及决定是否启用此作业(“启用[E]”复选框)。◆步骤:在此选项卡中可以新建、插入新的步骤,删除、编辑已有的步骤。单击“编辑[E]”按钮,在“编辑作业步骤”窗体中的“常规”选项卡中的“命令[M]”文本框中可以查阅到该作业的执行语句。◆调度:在此选项卡中可以新建调度、新建警报,删除、编辑已有的调度。◆通知:在此选项卡中可以设定作业完成时(即当作业成功时、作业失败时)执行的操作,即发送电子邮件、传呼操作员、发出网络警报信息、写入Windows应用程序事件日志、自动删除等操作。
第六步:第六步:检查结果经过上述五个步骤后,一个完整的备份数据库的计划就建立起来了。可以通过“资源管理器”来检查备份目录下是否存在相应地备份文件。经过长时间的使用,如果以“保留2天的数据库完全备份和2天的每个一小时的事务日志备份”的备份策略来正确地建立了一个完整的数据库维护计划的话,无论何时查看相应备份目录下的文件,都应该存在102个文件:◆2个数据库的完整备份,2个以“数据库名_db_yyyymmddhhss.bak”格式为文件名的文件;即◆3个与数据库完整备份相对应的操作过程的记录报告文件,即以“数据库名”+“备份4_yyyymmddhhss.txt”格式为文件名的文件;
◆48个事务日志的差异备份,即2天各24个以“数据库名_tlog_yyyymmddhhss.trn”格式为文件名的文件;◆49个与事务日志的差异备份对应的操作过程的记录报告文件,即以“数据库名”+“备份6_yyyymmddhhss.txt”格式为文件名的文件。以上文件名中,“数据库名”为第三步的步骤一中选定的数据库的名称;“yyyymmddhhss”是时间戳,其格式为:“yyyy”指“年”(4位数值),“mm”指“月”(2位数值,不足2位的补“0”),“dd”指“日”(2位数值,不足2位的补“0”),“hh”指“时”(2位数值,不足2位的补“0”),“ss”指“分”(2位数值,不足2位的补“0”)。结束语对于一个企业而言,日常运作中发生的各种业务所产生的所有数据,经过计算机不断地日积月累,逐渐成为公司的一种财富和资本。利用计算机,可以便捷地统计分析部分或全部的数据,通过各种形式的反馈(如图表、表格等),给公司的决策层用于参考,便于为公司的今后决策提供指导和帮助。正基于此,这些数据的价值随着时间的延续正呈现出几何速度的增长。因此我认为,对于数据的备份工作是网管员日常工作中最重要的工作之一。通过这次“数据库维护计划”的创建,我略有感受:1.经过这么长时间的运用,我认为“数据库维护计划”仍然存在不足之处,虽说“数据库维护计划”功能很强大,但是它最终的结果是生成一项作业,由“SQLServer2000Agent”服务定期执行它来完成对数据库的备份工作。这就要求“SQLServer2000Agent”服务能够正常地“运行”。从多次安装来看,Windows2000系统中“SQLServer2000Agent”服务能够正常运行,在而且能随Windows2000的启动自动运行。但是在Window98系统(包括第二版)中,却不能正常运行。所以说,在Windows98系统中即使依照上述步骤成功地创建了“数据库维护计划”,也会因为“SQLServer2000Agent”服务无法启动而变得没有任何作用。2.之所以选择“完全备份”,主要在于,在进行完全备份时,SQLServer将.mdf与其对应的.ldf文件进行对比,删除一些旧的、不必要的日志,然后将.mdf和.ldf文件进行合并、压缩后一起存储。◆优点是:能最大可能地、完整地保存数据库。◆缺点是:存储量随着数据库的增大而增大,存储时间也将随着数据库的增大而延长。3.在建立“数据库维护计划”过程,各位读者应该尽可能地去使用各种选项、功能,以便加深对“数据库维护计划”的理解和掌握。4.虽然Internet上有许多第三方备份软件和工具,但是大多数是共享版。由于担心知识产权问题、病毒问题和其它问题,所以我没有试用这些第三方软件。这样的话,它们的性能我就不清楚了。也许这些软件的功能非常强大,能够满足更多的、更高的要求。在这里我只是就
Windows2000和SQLServer2000自带的“备份”工具和软件进行一个比较。
作为网管员,无论其管理的网络的规模是大还是小,在日常的管理中除了维护网络平稳运行、及时排除网络故障、保护网络安全等工作以外,备份网络中关键数据也是其中的一个非常非常重要的工作环节。网络中的各种故障无非就分两种:软件故障和硬件故障。对于“硬件故障”可以通过维修或更换硬件设备得到及时解决;对于“软件故障”则可以通过重新安装或升级软件、重做网络或应用软件系统等方法及时解决,而且用此方法来解决网络故障大多需要一些基础的、关键的数据支持才能得以恢复正常。但是,网络中诸如此类的关键数据(特别是“应用软件系统”中的关键数据)的损坏或丢失,绝大部分是无法恢复和弥补的。即使可以恢复部分数据,弥补它们所花费的代价(诸如时间、人力、财力、物力等)都可能远远超出了公司的承受能力。所以说,注重数据的备份工作是网管员日常管理工作中的必须时刻关注的一项任务,也是必须周期性重复操作的一项工作。目录现行备份策略具体实现步骤结束语现行备份策略现行备份策略我公司在组建局域网时,考虑到商业企业的特点,仔细考量了购、销、存三大环节中发生的各种数据及其存储问题后,选定了以Windows2000Server为操作系统,SQLServer2000为数据库平台来搭建局域网的应用系统的软件平台,以网线为载体将购、销、存等核心部门的计算机通过局域网平台紧密地连接起来。这样,各个核心部门每天的任何一笔业务都及时地、动态地存储到公司局域网的核心Dell服务器上的SQLServer2000数据库中,并以此为基础平台向各方提供所需的各种数据服务。因此,自公司局域网开始正式运作之日起,作为网管员的我就非常注重对局域网中的关键数据——特别是这些业务数据的备份工作。同时,我也希望备份数据的软件能够实现以下自动功能。功能1:能够在每天的某个固定的时刻(如夜晚0:00:00,当然这个时间是可以自主设定的)对包含所有业务数据库在内的所有关键数据库进行一次“完全备份”。
功能2:能够在每天的0:00:00至23:59:59这段时间内,每间隔1个小时对功能1中所涉及到的各个数据库的事务日志进行“差异备份”。功能3:每天都能够保留功能1和功能2中所生成的数据库和事务日志的最近两天的备份(即:前一天的和前两天的),而且能够自动地删除久于两天前的所有数据库和事务日志的备份。功能4:定期(如每个星期一次)将所有关键数据库的完全备份的副本备份到磁带或其它存储介质上(这部分工作可能需要手工完成)。于是,围绕这些功能的实现,在日常管理工作中,我尽可能地尝试了各种备份数据的软件和方法,如Windows2000自带的“备份”工具、SQLServer2000自带的“备份”功能等。这些备份软件和方法的功能各有千秋,但是都存在以下缺点:一种就是需要人工干预,无法实现自动备份(如Windows2000自带的“备份”工具)。如果采用这种方法,就必须时刻人工手动备份,万一哪天因为出差或其它原因没有进行备份,而这时又出现服务器或数据故障的话,那麻烦就大了。另一种就是能够实现自动备份,但是旧的备份不能被自动地删除(如SQLServer2000自带的“备份”功能)。如果采取这种方法,就必须及时地手工删除旧的备份,否则再大的硬盘也会迅速地被用完。在相互比较后,我还是决定采用第二种——SQLServer2000自带的“备份”功能对关键数据库进行备份,因为它能够实现“自动备份”功能,比第一种略强。所以,在一段时期内,我每天上班后的第一件事就是先检查一下备份目录下各种数据的新的备份,然后手工删除旧的备份数据。这种做法一度让我很是苦恼。一天,我在利用SQLServer2000的“帮助”查询某个Transact-SQL语句的语义解释时无意中阅读到“自动化管理任务”的内容。从头到尾地仔细阅读后,我不由得眼睛一亮,原来SQLServer2000本身自带了一个能够实现我的备份要求的、强大的功能——“数据库维护计划”。于是我立刻按照这部分内容的提示,以一个数据库为试验样本一步一步地操作,成功地创建了一个数据库维护计划。经过一个星期的试运行,这个计划果然能够实现自动备份调度,以及自动删除旧的数据备份,完全能够满足我的备份要求。从那时起,我就利用SQLServer2000的“数据库维护计划”备份所有关键数据库,而且严格地、定期地执行功能4,每个星期五将完全备份的数据库备份到磁带和局域网中其它客户机(主要是用于网络管理的网管PC)的硬盘上。这样做的目的是,能同时异地保存三份相同的备份,减少故障带来的损失。而且,通过SQLServer2000的“数据库维护计划”,我现在能够较轻松地备份所需各种数据,方便地管理其备份,相应地减少了日常工作量,也减轻了部分工作压力。具体实现步骤
目录第一步:打开SQLServer“企业管理器”窗体第一步:Server“企业管理器”企业管理器第二步:找到“数据库维护计划”第二步:找到“数据库维护计划”功能库维护计划第三步:创建“数据库维护计划”第三步:创建“数据库维护计划”第四步:维护和管理“数据库维护计划”第四步:维护和管理“数据库维护计划”第五步:代理以便执行“作业”第五步:启动SQLServer2000代理以便执行“作业”第六步:第六步:检查结果“数据库维护计划”功能在SQLServer2000的“企业管理器”中可以找到。说明:1.以下操作是在服务器的Windows2000Server上进行操作的。在Window9X系统上操作相同。2.由于SQLServer2000执行备份时将产生许多文件(特别是在进行事务日志备份时),所以建议按数据库名称分别建立独立的备份目录进行存储。3.以下所有操作过程当中一般不会对数据库的使用产生影响。第一步:Server“企业管理器企业管理器”第一步:打开SQLServer“企业管理器”窗体用鼠标单击任务栏上的“开始”按钮中的“程序(P)”菜单下的“MicrosoftSQLServer”子菜单中的“企业管理器”菜单项,即可打开SQLServer2000的“企业管理器”窗体。第二步:找到“数据库维护计划”第二步:找到“数据库维护计划”功能在“企业管理器”窗体中左侧的树型选项卡中,用鼠标单击“+”图标扩展开“控制台根目录”下的“MicrosoftSQLServers”,可以看到其下有一个“SQLServer组”;接着继续扩展开“SQLServer组”,此时可以看到其下出现了服务器的名称(图1中的“JXNC-SERVER”就是我的服务器的名称);再继续扩展开此服务器,可以看到其下列出了诸如“数据库”、“数据转换服务”等项目;最后单击“管理”项目,可以看到其下存在一个“数据库维护计划”(如图1)。
图1单击“数据库维护计划”项目,在“企业管理器”窗口右侧将会显示出已经存在的维护计划项目。每个维护计划均包括以下项目:1.名称:就是维护计划的名称。此名称可以自定义,中英文皆可。2.数据库:就是维护计划所进行维护的数据库的名称。因为一个维护计划允许同时维护多个数据库,所以此处可以显示出多个数据库的名称(在图1中可以看到名为“系统数据库备份”的数据库维护计划中的“数据库”就包括三个数据库:master、model和msdb)。3.服务器:也就是维护计划所维护的数据库所处的服务器的名称。“(local)”表示是本地服务器。4.对策:是指维护计划所需要进行的具体维护工作的内容。图1中有3个“数据库维护计划”均为“数据库备份,事务日志备份”,它的含义就是这些维护计划中同时对所指定的数据库进行“数据库”和“事务日志”的备份。第三步:创建“数据库维护计划”第三步:创建“数据库维护计划”鼠标右击“数据库维护计划”项目,选择“新建维护计划(P)”功能,将打开“数据库维护计划向导”窗体,依照此向导能够创建一个新的“数据库维护计划”。
步骤1:单击“下一步(N)”按钮,打开“选择数据库”窗体(如图2)。在此窗体中可以选定一个或多个的数据库作为操作对象。为了叙述方便,我在此只选择了一个数据库“regie”。
图2步骤2:单击图2中的“下一步(N)”按钮,打开“更新数据优化信息”窗体(如图3)。
图3在此窗体中可以对数据库中的数据和索引重新进行组织,以及能够设定在满足一定条件的情况下,维护计划自动删除数据库中的未使用的空间,以便提高性能。但要注意的是,在此窗体中,只要选定了“重新组织数据和索引页[R]”复选框,“更新查询优化器所使用的统计。示例[D]”复选框将失效(变成灰色,不能选择)。而且“重新组织数据和索引页[R]”复选框和“从数据库文件中删除未使用的空间[M]”复选框二者只要有一个被选中,其下的“调度[S]”功能才有效。单击“更改[C]”按钮可以对“调度”进行自定义。各位读者可以根据自身情况决定是否选用其中的功能。当然也可以通过单击“帮助”按钮来查看各功能的具体含义。在此窗体中能够便捷地设定每项作业的持续运行时间和运行的频率。完成自己的设置后,一定要选定右上角的“启用调度[B]”复选框,这样一个作业调度才算真正完成了。步骤3:单击图3中的“下一步(N)”按钮,打开“检查数据库完整性”窗体。在此窗体中可以设定维护计划在备份数据库前自动检查数据库的完整性,以便检测由于硬件或软件错误而导致数据的不一致。在此窗体中只有先选定了“检查数据库完整性[H]”复选框,其下的“备份之前执行这些检查[R]”和“调度[S]”功能才有效。单击“更改[C]”按钮可以对“调度”进行自定义。
各位读者可以自主决定,较好的一种做法就是选中“检查数据库完整性[H]”复选框(推荐,因为有可能会修正一些错误)。步骤4:在“检查数据库完整性”窗体中的“下一步(N)”按钮,打开“指定数据库备份计划”窗体。如需对数据库进行备份,则必须选定“作为维护计划的一部分来备份数据库[A]”复选框,而且必须指定存储备份文件的位置:磁带[P]或磁盘[K]。如果选择“磁盘[K]”作为数据库备份的位置,设定“调度”后单击“下一步(N)”按钮则显示“指定备份磁盘目录”窗体(如图4)。
图4在图4中,可以具体指定存储备份文件的目录(可以使用默认的目录,也可自定义)、备份文件扩展名,而且能够指示备份计划自动地删除早于某个时间(图4中设定的是“2天”,也就是说两天前的所有备份文件将被自动地删除,只留下最近两天的备份)的备份文件。而图4中的“为每个数据库创建子目录[C]”功能只是在步骤1中选择了多个数据库时才有用,对于一个数据库作用不大。设定后,单击“下一步(N)”按钮则显示“指定事务日志备份计划”窗体。如果选择“磁带[P]”作为数据库备份的位置,设定“调度”后单击“下一步(N)”按钮则直接显示“指定事务日志备份计划”窗体。
步骤5:指定“事务日志备份计划”的过程与步骤4的过程完全相同,只是在设定“调度”上稍有差别(因为我的要求是数据库每天备份一次,事务日志每1小时备份一次)。步骤6:对事务日志的备份计划全部设定后,单击“下一步(N)”按钮则显示“要生成的报表”窗体。在此窗体中可以指定用于存放整个备份计划执行过程中的日志的目录。设定过程与图4的操作及其相似。
图5步骤7:完成步骤6后,单击“下一步(N)”按钮则显示“维护计划历史纪录”窗体。在此窗体中可以指定如何存储此维护计划的历史纪录(是存放在“本地服务器”上,还是在“远程服务器”上),而且通过指定表中的行数可以限定历史纪录的存储大小。步骤8:完成步骤7后,单击“下一步(N)”按钮则显示“正在完成数据库维护计划向导”窗体(如图5)。在此窗体中可以自定义一个“计划名[P]”(推荐,这样便于管理和识别),当然也可使用默认的“计划名[P]”。而且还可以通过对“计划名[P]”下的文本框中的内容进行确认,如有误,则可通过单击窗体中的“上一步[B]”按钮退回到相应的窗体进行修改。
步骤9:完成步骤8后,单击“完成”按钮,则显示“维护计划已创建成功。”的提示框,再单击“确定”按钮即成功地设定了一个新的数据库维护计划。从图6中可以看到,已经成功的创建了一个新的数据库维护计划——“regie备份”。第四步:维护和管理“数据库维护计划”第四步:维护和管理“数据库维护计划”第三步完成后,对各个“数据库维护计划”的日常维护和管理都非常方便,只需要双击“数据库维护计划”即可对第三步中所涉及的内容进行变更、修正。
图6如图6所示,鼠标右击“regie备份”,单击“属性[R]”,或者直接双击“regie备份”,打开“数据库维护计划”窗体。在此窗体中集成了第三步中涉及到的所有功能,每项功能都能任意修改,修改过程与第三步中的相应步骤一样。但需要说明的是,在设定图7中的“报表”选项卡下的“文本报表”中的“删除早于此时间的文本报表文件[F]”选项时,也就是第三步中的步骤6中的内容,无论您将其设定成“分钟”、“小时”、“天”,还是“月”,创建成功后都将被自动地更正为“周”,而且以后无论如何修改,保存后再去查看时它仍将显示为“周”,但不意味着其它选项无效,其它选项仍然有效。
图7第五步:代理以便执行“作业”第五步:启动SQLServer2000代理以便执行“作业”完成第三步后,还需启动SQLServer2000Agent(代理),以便执行“数据库维护计划”作业。与展开SQLServer2000“数据库维护计划”的步骤一样,在“管理”项目中,可以发现存在一个“SQLServer代理”(如图8)。
图8单击“SQLServer代理”下的“作业”子菜单,在“企业管理器”窗口右侧将会显示出已经存在的作业项目(在图8中可以看到已经存在17个作业项目)。每个作业项目均包括以下数据列:1.名称:当然是指作业的名称,可以自定义,中英文皆可。为了理解方便,建议用中英文结合。每当新建立一个“数据库维护计划”,将自动生成以下默认名称的作业:(1)当新建的“数据库维护计划”中设定了“备份数据库”功能时,将生成默认名为“DB维护计划‘******’的DB备份作业”的作业。(2)当新建的“数据库维护计划”中设定了“备份事务日志”功能时将生成默认名为“DB维护计划‘******’的事务日志备份作业(多服务器)”的作业。以上(1)和(2)中的“******”处将显示“数据库维护计划”中的“计划名”(也就是第三步步骤8中设定的“计划名”)。2.分类:指明该作业当前所属的类别。缺省值为“[未分类(本地)]”。3.启用:指明该作业是否处于“启用”状态。
4.可运行:指明该作业是否处于“可运行”状态。5.已调度:指明该作业是否处于“已调度”状态。6.状态:指明该作业当前的运行状态—不在运行、正在运行。7.上次运行状态(开始日期):显示最近一次运行该作业后的状态(“已成功”、“失败”,还是“未知”),和运行时的日期和时间。8.下次运行日期:指明下一次运行该作业的日期和时间。如图8所示,鼠标右击“regie完全备份”作业,单击“属性[R]”,或者直接双击“regie完全备份”作业,打开作业的“属性”窗体。在此窗体中集成了该作业的详细的配置项。每个配置项都能任意修改。“属性”窗体中有四个选项卡:◆常规:在此选项卡中可以重新设定作业名称(“名称[N]”文本框)、修改作业的分类(“分类[Y]”下拉框)、指定作业的所有者(“所有者[W]”下拉框)、简单地对作业进行描述(“描述[R]”文本框),以及决定是否启用此作业(“启用[E]”复选框)。◆步骤:在此选项卡中可以新建、插入新的步骤,删除、编辑已有的步骤。单击“编辑[E]”按钮,在“编辑作业步骤”窗体中的“常规”选项卡中的“命令[M]”文本框中可以查阅到该作业的执行语句。◆调度:在此选项卡中可以新建调度、新建警报,删除、编辑已有的调度。◆通知:在此选项卡中可以设定作业完成时(即当作业成功时、作业失败时)执行的操作,即发送电子邮件、传呼操作员、发出网络警报信息、写入Windows应用程序事件日志、自动删除等操作。第六步:第六步:检查结果经过上述五个步骤后,一个完整的备份数据库的计划就建立起来了。可以通过“资源管理器”来检查备份目录下是否存在相应地备份文件。经过长时间的使用,如果以“保留2天的数据库完全备份和2天的每个一小时的事务日志备份”的备份策略来正确地建立了一个完整的数据库维护计划的话,无论何时查看相应备份目录下的文件,都应该存在102个文件:◆2个数据库的完整备份,即2个以“数据库名_db_yyyymmddhhss.bak”格式为文件名的文件;◆3个与数据库完整备份相对应的操作过程的记录报告文件,即以“数据库名”+“备份4_yyyymmddhhss.txt”格式为文件名的文件;
◆48个事务日志的差异备份,2天各24个以“数据库名_tlog_yyyymmddhhss.trn”即格式为文件名的文件;◆49个与事务日志的差异备份对应的操作过程的记录报告文件,即以“数据库名”+“备份6_yyyymmddhhss.txt”格式为文件名的文件。以上文件名中,“数据库名”为第三步的步骤一中选定的数据库的名称;“yyyymmddhhss”是时间戳,其格式为:“yyyy”指“年”(4位数值),“mm”指“月”(2位数值,不足2位的补“0”),“dd”指“日”(2位数值,不足2位的补“0”),“hh”指“时”(2位数值,不足2位的补“0”),“ss”指“分”(2位数值,不足2位的补“0”)。结束语对于一个企业而言,日常运作中发生的各种业务所产生的所有数据,经过计算机不断地日积月累,逐渐成为公司的一种财富和资本。利用计算机,可以便捷地统计分析部分或全部的数据,通过各种形式的反馈(如图表、表格等),给公司的决策层用于参考,便于为公司的今后决策提供指导和帮助。正基于此,这些数据的价值随着时间的延续正呈现出几何速度的增长。因此我认为,对于数据的备份工作是网管员日常工作中最重要的工作之一。通过这次“数据库维护计划”的创建,我略有感受:1.经过这么长时间的运用,我认为“数据库维护计划”仍然存在不足之处,虽说“数据库维护计划”功能很强大,但是它最终的结果是生成一项作业,由“SQLServer2000Agent”服务定期执行它来完成对数据库的备份工作。这就要求“SQLServer2000Agent”服务能够正常地“运行”。从多次安装来看,在Windows2000系统中“SQLServer2000Agent”服务能够正常运行,而且能随Windows2000的启动自动运行。但是在Window98系统(包括第二版)中,却不能正常运行。所以说,在Windows98系统中即使依照上述步骤成功地创建了“数据库维护计划”,也会因为“SQLServer2000Agent”服务无法启动而变得没有任何作用。2.之所以选择“完全备份”,主要在于,在进行完全备份时,SQLServer将.mdf与其对应的.ldf文件进行对比,删除一些旧的、不必要的日志,然后将.mdf和.ldf文件进行合并、压缩后一起存储。◆优点是:能最大可能地、完整地保存数据库。◆缺点是:存储量随着数据库的增大而增大,存储时间也将随着数据库的增大而延长。3.在建立“数据库维护计划”过程,各位读者应该尽可能地去使用各种选项、功能,以便加深对“数据库维护计划”的理解和掌握。4.虽然Internet上有许多第三方备份软件和工具,但是大多数是共享版。由于担心知识产权问题、病毒问题和其它问题,所以我没有试用这些第三方软件。这样的话,它们的性
能我就不清楚了。也许这些软件的功能非常强大,能够满足更多的、更高的要求。在这里我只是就Windows2000和SQLServer2000自带的“备份”工具和软件进行一个比较。