学云签约讲师:天轰穿趣味编程系列视频教程SqlServer开发视频教程创建和维护数据库(上)田洪川(天轰穿)Blog:学号/QQ号:110535808微博:://weibo.com/thcd学云为您提供高品质课件、学习督导服务、即时答疑、知识交易平台上节回顾•用客户端最大的优点是:–方便–学习•SqlServer安全机制–权限分为预定义和自定义–预定义的分为服务器固定角色和数据库角色–自定义的则直接针对每一个很小的对象,可以设置,还可以使用应用程序角色学云为您提供高品质课件、学习督导服务、即时答疑、知识交易平台•系统数据库:系统数据库的说明•数据库文件和文件组:概念,管理,优化数据库设计•创建数据库:数据库文件、日志文件和文件组•修改数据库:扩大、收缩、重命名•删除数据库学习目标学云为您提供高品质课件、学习督导服务、即时答疑、知识交易平台master数据库记录SQLServer实例的所有系统级信息。msdb数据库用于SQLServer代理计划警报和作业。model数据库用作SQLServer实例上创建的所有数据库的模板。对model数据库进行的修改(如数据库大小、排序规则、恢复模式和其他数据库选项)将应用于以后创建的所有数据库。Resource数据库一个只读数据库,包含SQLServer包括的系统对象。系统对象在物理上保留在Resource数据库中,但在逻辑上显示在每个数据库的sys架构中。tempdb数据库一个工作空间,用于保存临时对象或中间结果集。系统数据库学云为您提供高品质课件、学习督导服务、即时答疑、知识交易平台•使用SQLServerManagementStudio创建数据库学云为您提供高品质课件、学习督导服务、即时答疑、知识交易平台createdatabaseStu_db2--后面的Stu_db是我们要创建数据库的名字onprimary--primary是指定关联的文件列表,定义主文件(name=studio_db2,--文件名字filename='d:\studio_db2.mdf',--数据文件的路径以及名字size=3mb,--初始大小maxsize=unlimited,--最大上限,未指定就是不设定文件上限,直到磁盘撑满filegrowth=10%--增量,可以用%或者xMB,但是不能超过最大上限),(name=studio_db_two,filename='e:\stu_db2_two.ndf',size=3MB,maxsize=500MB,filegrowth=10MB),filegroupstudio_new_group--一个新的组,(name=studio_db_new,filename='d:\studio_db2_new.ndf',size=3MB,maxsize=300MB,filegrowth=0)logon(name=studio_log,filename='d:\studio_log.ldf',size=3MB,maxsize=20mb,filegrowth=1MB)创建数据库-Transact-Sql学云为您提供高品质课件、学习督导服务、即时答疑、知识交易平台•createdatabaseStu_db3•如上创建的数据库的其他选项全都是默认设置,只有一个文件组包含了一个主文件和一个事务日志文件,其主文件的初始大小为3MB,增量为1MB,文件大小不限制,而日志文件的初始大小为1MB,增量为10%,文件上限为2,097,152MB,简单来说就是2TB,这也是model数据库中设置的值创建数据库-Transact-Sql学云为您提供高品质课件、学习督导服务、即时答疑、知识交易平台查看数据库属性学云为您提供高品质课件、学习督导服务、即时答疑、知识交易平台文件说明主要主要数据文件包含数据库的启动信息,并指向数据库中的其他文件。用户数据和对象可存储在此文件中,也可以存储在次要数据文件中。每个数据库有一个主要数据文件。主要数据文件的建议文件扩展名是.mdf。次要次要数据文件是可选的,由用户定义并存储用户数据。通过将每个文件放在不同的磁盘驱动器上,次要文件可用于将数据分散到多个磁盘上。另外,如果数据库超过了单个Windows文件的最大大小,可以使用次要数据文件,这样数据库就能继续增长。次要数据文件的建议文件扩展名是.ndf。事务日志事务日志数据库文件的类型数据文件最大的单位是TB,可用的单位主要是KB、MB、TB,默认是MB。学云为您提供高品质课件、学习督导服务、即时答疑、知识交易平台•每个数据库有一个主要文件组。此文件组包含主要数据文件和未放入其他文件组的所有次要文件。可以创建用户定义的文件组,用于将数据文件集合起来,以便于管理、数据分配和放置。•例如,可以分别在三个磁盘驱动器上创建三个文件Data1.ndf、Data2.ndf和Data3.ndf,然后将它们分配给文件组fgroup1。然后,可以明确地在文件组fgroup1上创建一个表。对表中数据的查询将分散到三个磁盘上,从而提高了性能。文件组学云为您提供高品质课件、学习督导服务、即时答疑、知识交易平台•实例,对stu_db1数据库增加一个文件组,然后向这个组中增加一个新文件,代码如下:文件和文件组操作USEmasterGOALTERDATABASEStu_db1ADDFILEGROUPfile_group--向数据库增加新文件组file_groupGOALTERDATABASEStu_db1ADDFILE(--向数据库中增加新文件NAME=N'new_datafile',FILENAME=N'd:\new_datafile.ndf',SIZE=3072KB,FILEGROWTH=1024KB)TOFILEGROUPfile_group--指定该文件所在的文件组GO学云为您提供高品质课件、学习督导服务、即时答疑、知识交易平台•要用T-SQL语句删除文件的话,就需要用到ALTERDATABASE(修改数据库)了•例如要删除Stu_db3数据库中你新增加的那个次要数据文件“sss.ndf”,执行SQL语句如下删除数据库文件USEStu_db3GOALTERDATABASEStu_db3REMOVEFILEsss--不加扩展名GO学云为您提供高品质课件、学习督导服务、即时答疑、知识交易平台•我们在数据库“OneDb_bak”中创建一个名为Two_fg的文件组,T-SQL语句如下•将上面创建的Two_fg设置为默认文件组,T-SQL语句如下•改名管理文件组ALTERDATABASEOneDb_bakADDFILEGROUPTwo_fgALTERDATABASEOneDb_bakMODIFYFILEGROUPTwo_fgDEFAULTALTERDATABASEOneDb_bakMODIFYFILEGROUPTwo_fgname=User_fg学云为您提供高品质课件、学习督导服务、即时答疑、知识交易平台•对文件组设置只读•删除文件组管理文件组–续ALTERDATABASEOneDb_bakMODIFYFILEGROUPUser_fgREADONLYALTERDATABASEOneDb_bakREMOVEFILEGROUPUser_fg学云为您提供高品质课件、学习督导服务、即时答疑、知识交易平台•文件组对组内的所有文件都使用按比例填充策略。当数据写入文件组时,SQLServer数据库引擎按文件中的可用空间比例将数据写入文件组中的每个文件,而不是将所有数据都写入第一个文件直至其变满为止。然后再写入下一个文件。•例如,如果文件f1有100MB可用空间,文件f2有200MB可用空间,则从文件f1中分配一个区,从文件f2中分配两个区,依此类推。这样,两个文件几乎同时填满,并且可获得简单的条带化。•假定将数据库设置为自动增长,则当文件组中的所有文件填满后,数据库引擎便会采用循环方式一次自动扩展一个文件以容纳更多数据。文件组的填充策略学云为您提供高品质课件、学习督导服务、即时答疑、知识交易平台•使用文件和文件组可以改善数据库的性能,因为这样允许跨多个磁盘、多个磁盘控制器或RAID(独立磁盘冗余阵列)系统创建数据库。•文件和文件组还允许数据布局,因为可以在特定的文件组中创建表。•通常数据库在只有单个数据文件和单个事务日志文件的情况下性能发挥得更好。•如果使用多个文件,最好为附加文件创建第二个文件组,并将其设置为默认文件组。这样,主文件将只包含系统表和对象。优化数据库的策略学云为您提供高品质课件、学习督导服务、即时答疑、知识交易平台•若要使性能最大化,请在尽可能多的不同的可用本地物理磁盘上创建文件或文件组。将数据操作最频繁的对象置于不同的文件组中。•使用文件组将对象放置在特定的物理磁盘上。•将在同一联接查询中使用的不同表置于不同的文件组中。由于采用并行磁盘I/O对联接数据进行搜索,所以性能将得以改善。•将最常访问的表和属于这些表的非聚集索引置于不同的文件组中。如果文件位于不同的物理磁盘上,由于采用并行I/O,所以性能将得以改善。•不要将事务日志文件置于其中已有其他文件和文件组的物理磁盘上。优化数据库的策略–续学云为您提供高品质课件、学习督导服务、即时答疑、知识交易平台状态定义ONLINE文件可用于所有操作。如果数据库本身处于在线状态,则主文件组中的文件始终处于在线状态。如果主文件组中的文件处于离线状态,则数据库将处于离线状态,而辅助文件的状态未定义。OFFLINE文件不可访问,而且还可能不显示在磁盘中。文件通过用户操作变为离线,在执行其他用户操作之前保持离线状态。RESTORING正在还原文件。文件处于还原状态(因为还原命令会影响整个文件,而不仅是页还原),并且在还原完成及文件恢复之前,一直保持此状态。RECOVERYPENDING文件恢复被推迟。由于在段落还原过程中未还原和恢复文件,因此文件将自动进入此状态。需要用户执行其他操作来解决该错误,并允许完成恢复过程。SUSPECT联机还原过程中,恢复文件失败。如果文件位于主文件组,则数据库还将标记为可疑。否则,仅文件处于可疑状态,而数据库仍处于在线状态。在通过以下方法之一将文件变为可用之前,该文件将保持可疑状态:还原和恢复包含REPAIR_ALLOW_DATA_LOSS的BCCCHECKDBDEFUNCT当文件不处于在线状态时被删除。删除离线文件组后,文件组中的所有文件都将失效。文件状态学云为您提供高品质课件、学习督导服务、即时答疑、知识交易平台状态定义ONLINE可以对数据库进行访问。即使可能尚未完成恢复的撤消阶段,主文件组仍处于在线状态。OFFLINE数据库无法使用。数据库由于显式的用户操作而处于离线状态,并保持离线状态直至执行了其他的用户操作。例如,可能会让数据库离线以便将文件移至新的磁盘。然后,在完成移动操作后,使数据库恢复到在线状态。RESTORING还原状态,正在还原主文件组的一个或多个文件,或正在脱机还原一个或多个辅助文件。数据库不可用。RECOVERING正在恢复数据库。恢复进程是一个暂时性状态,恢复成功后数据库将自动处于在线状态。如果恢复失败,数据库将处于可疑状态。数据库不可用。RECOVERYPENDING恢复未完成状态,SQLServer在恢复