《SQL Server数据库系统基础》课件004_第1页
《SQL Server数据库系统基础》课件004_第2页
《SQL Server数据库系统基础》课件004_第3页
《SQL Server数据库系统基础》课件004_第4页
《SQL Server数据库系统基础》课件004_第5页
已阅读5页,还剩123页未读 继续免费阅读

下载本文档

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

文档简介

第4章SQLServer数据库及其管理4.1SQLServer数据库的存储结构和对象4.2系统数据库和示例数据库4.3数据库的查看4.4数据库的建立4.5数据库的删除4.6数据库的移动4.7数据库的其他操作4.8实战训练小结思考题

数据库是本课程的主要对象,那么数据库是如何来操作和管理的呢?本章任务: 认识SQLServer数据库,操作SQLServer数据库,并掌握SQLServer数据库的管理。

SQLServer数据库是有组织的数据的集合。在SQLServer中,数据库是作为一个整体集中管理的。在企业管理器中展开控制台根目录“服务器/数据库”,选择“数据库”节点,可以看到SQLServer2000系统中已有的数据库,如图4-1所示。在逻辑上,SQLServer数据库由数据库对象组成,数据库是存放数据库对象的容器;在物理上,SQLServer数据库以文件的形式存放在物理磁盘上,数据库中的对象没有对应的磁盘文件。图4-1在企业管理器中看到的数据库4.1SQLServer数据库的存储结构和对象数据库在磁盘上是以文件为单位存储的,它由数据库文件和事务日志文件组成。一个数据库至少应该包含一个数据库文件和一个事务日志文件。

SQLServer2000将一个数据文件中的空间以块的形式分配给表格和索引,每块有64KB空间,叫做扩展盘区。每个扩展盘区由8个连续的“页面”组成。扩展盘区有两种类型:由单个对象所拥有的是统一扩展盘区;由8个对象所共享的是混合扩展盘区。

页面是SQLServer2000中数据存储的基本单元,每个页面的大小为8KB。通常情况下,数据页面以行的方式存储数据。一行数据最多达8060字节。每个页面的开始有96个字节的报头,用于存储系统信息。下面我们来看看数据库文件是什么。4.1.1数据库文件

SQLServer2000中的每个数据库由多个操作系统中的文件所组成,数据库的所有数据、对象和数据库操作日志均存储在这些操作系统文件中。根据这些文件的作用不同,可以将它们划分为数据文件和日志文件,数据文件又分为主数据文件和辅助数据文件。1.主数据文件(PrimaryDatabaseFile)

数据文件是存放数据库数据和数据库对象的文件。一个数据库可以有一个或多个数据文件,一个数据文件只能属于一个数据库。当有多个数据文件时,有一个文件被定义为主数据文件(简称为主文件),其扩展名为mdf。主数据文件用来存储数据库的启动信息以及部分或全部数据,是所有数据文件的起点,包含指向其他数据文件的指针。一个数据库必须有一个主数据文件,也只能有一个主数据文件。2.辅助数据文件(SecondaryDatabaseFile)

辅助数据文件用于存储主数据文件中未存储的剩余数据和数据库对象。一个数据库可以没有辅助数据文件,也可以同时拥有多个辅助数据文件。使用辅助数据文件的优点在于:可以在不同的物理磁盘上创建辅助数据文件并将数据存储在文件中,这样可以提高数据处理的效率。另外,当数据庞大时,如果主数据文件的大小超过操作系统对单一文件大小的限制,则也需要使用辅助数据文件来存储更多的数据。辅助数据文件的扩展名为ndf(简称为辅助文件)。3.事务日志文件事务日志文件用于存储数据库的更新情况等事务日志信息。当使用INSERT、DELETE、UPDATE等语句对数据库进行更改时,操作都会记录在此文件中,而其他对数据库内容没有影响的操作则不作记录。当数据库损坏时,管理员可以使用事务日志恢复数据库。每一个数据库必须至少拥有一个事务日志文件,允许拥有多个日志文件。事务日志文件的扩展名为ldf,日志文件的大小至少是512KB。为保证所有对数据库的更新操作都能写入日志,SQLServer事务日志采用提前写入的方式,即对数据库的修改先写入事务日志,然后再写入数据库。其具体操作是:系统先将更改操作写入事务日志,然后更改存储在计算机缓存中的数据。为了提高执行效率,此更改不会立即写到硬盘的数据库中,而是由系统以固定的时间间隔执行CHECKPOINT命令,将更改过的数据库批量写入硬盘。SQLServer在执行数据更改时会设置一个开始点和一个结束点,如果尚未到达结束点而因某种原因使操作中断,则在SQLServer重新启动时会自动恢复已修改的数据,使其返回未被修改的状态。由此可见,当数据库被破坏时,可以用事务日志恢复数据库中的内容。注意:由于SQLServer2000中的数据和事务日志文件随着数据的不断操作而变化,同时又需要系统反应灵敏,因此,这些文件不能存放在压缩文件系统或共享网络目录等远程的网络驱动器上。SQLServer2000的文件拥有两个名称:逻辑文件名和物理文件名。物理文件名是操作系统中的路径加文件名,而逻辑文件名是物理文件名的一个简称或别名。当使用Transact-SQL命令语句访问某一个文件时,必须使用该文件的逻辑名。逻辑名必须符合SQLServer的命名规则,而且各个数据库的逻辑文件名不能相同。物理文件名是文件的实际存储在磁盘上的文件名,而且可包含完整的磁盘目录路径。例如,对于Master系统数据库,Master为主数据文件的逻辑名,而其对应的物理文件名为Master.mdf,其日志文件的逻辑名为Mastlog,物理文件名为Master.ldf。这些文件名都可以在安装好的SQL服务器上验证。4.1.2数据库文件组为了便于管理,SQLServer允许将多个文件归纳为一组,并赋予一个名称,这就是文件组。利用文件组可以使服务器的性能得到提高。例如,可以在不同的硬盘上创建多个数据文件,并将这些文件指派到某个文件组中。如果在该文件组上创建了一个数据表,则当查询该数据表中的数据时,可以在不同的硬盘上同时进行,提高查询效率。

QLServer中的数据库文件组分为主文件组(PrimaryFileGroup)和用户定义文件组(User_definedGroup)。

(1)主文件组:由系统创建,包含主数据文件和任何没有明确指派给其他文件组的数据文件。数据库的系统表都包含在主文件组中。(2)用户定义文件组:由用户创建,是在CREATEDATABASE或ALTERDATABASE语句中使用FILEGROUP关键字指定的文件组。主文件组中包含了所有的系统表。当建立数据库时,主文件组包括主数据文件和未指定组的其他数据文件。在用户定义文件组和主文件组之间,有一个默认文件组指向其中一个文件组。在创建数据库对象时,如果没有指定将其放在哪一个文件组中,则会将它放在默认文件组中。如果没有指定默认文件组的指向,则默认文件组指向主文件组。一个文件只能存在于一个文件组中,一个文件组也只能被一个数据库使用;文件组只包含数据文件(主数据文件和辅助数据文件),这些文件可以存放在不同的物理磁盘上。

事实上,SQLServer2000在没有文件组时也能有效地工作。在没有指定用户定义文件组的情况下,所有文件都包含在主文件组中。在SQLServer2000中,使用文件组可以提高输入/输出性能,但它不是唯一的手段。4.1.3SQLServer的数据库对象数据库的逻辑存储结构指数据库由哪些性质的信息组成。SQLServer的数据库不只可以存储数据,还可以存储所有与数据处理操作相关的信息。实际上,SQLServer的数据库由诸如表、视图、索引等各种不同的数据库对象组成,它们分别用来存储特定信息并支持特定功能,构成数据库的逻辑存储结构。SQLServer2000的数据库中的数据及信息在逻辑上组成一系列对象,用户打开某个数据库时,所看到的是逻辑对象,而不是存放在磁盘上的物理数据文件。数据库中的逻辑对象如下:

(1)表(Table):一种二维数据对象,由行和列组成,用于存储关系数据库中的数据。每个表存储有关由数据库建模的一类对象的信息。

(2)视图(View):可以使用与表相同的方式在SQL语句中引用的数据库对象。

(3)存储过程(Storedprocedures):Transact-SQL语句的预编译集合,这些语句在一个名称下存储并作为一个单元运行。(4)触发器(Triggers):当修改指定表中的数据时自动执行的存储过程。

(5)用户自定义数据类型(User-defineddatatypes):由用户创建、用于自定义数据存储、基于SQLServer数据类型的一种数据类型。

(6)用户自定义函数(User-definedfunctions):由用户定义的Transact-SQL函数。

(7)索引(Indexes):关系数据库中基于键值提供的对表的行中数据进行快速访问的数据库对象。

(8)规则(Rule):绑定到列或用户定义的数据类型,并指定列可接受哪些数据值的数据库对象。(9)默认值(Defaults):当用户未指定时由系统自动指派的数据值、选项设置、排序规则或名称。

(10)全文目录(Full-textcatalog):存储数据库内表的全部全文索引。

(11)约束(Constraint):指派给表列的属性,用于防止将某些类型的无效数值放到该列中。4.2系统数据库和示例数据库

SQLServer2000安装成功后,系统会自动创建6个数据库,它们分别是master、model、msdb、tempdb、pubs和northwind。其中,前四个是系统数据库,后两个为示例数据库。这些系统数据库的文件存储在MicrosoftSQLServer默认安装目录下的MSSQL子目录的Data文件夹中。例如,master数据库的数据文件和日志文件的文件名分别为“master.mdf”和“master.ldf”。各数据库的主要功能如下:● master数据库:是SQLServer系统最重要的数据库。它记录了SQLServer系统的所有系统信息。这些系统信息包括所有的登录信息、系统设置信息、SQLServer的初始化信息和其他系统数据库及用户数据库的相关信息。因此,在创建一个数据库,更改系统的配置,添加个人登录帐户以及进行任何会更改系统数据库master的操作之后,应当及时备份Master系统数据库。● model数据库:是所有用户数据库和tempdb数据库的模板数据库。它含有master数据库的所有系统表子集,这些系统数据库是每个用户定义数据库时都需要的。当创建新的数据库时,SQLServer便会复制model数据库并以此作为新数据库的基础,因此利用它可以大大简化数据库及其对象的创建和设置工作,为用户节省大量的时间。● msdb数据库:是代理服务数据库。它为报警、任务调度和记录操作员的操作提供存储空间。● tempdb数据库:是一个临时数据库。它为所有的临时表、临时存储过程及其他临时操作提供存储空间。tempdb数据库由整个系统的所有数据库使用,不管用户使用哪个数据库,他们建立的所有临时表和存储过程都存储在tempdb中。每次启动SQLServer时,tempdb数据库被重新建立。当用户与SQLServer断开联接时,其临时表和存储过程被自动删除。● pubs和northwind数据库:是SQLServer自带的两个实例数据库,可以作为SQLServer学习的辅助工具,它们是否存在与整个数据库系统的运行无关。pubs数据库存储了一个虚构的图书出版公司的基本情况;northwind数据库则包含了一个公司的销售数据,该公司是一个虚构的公司,从事食品进出口业务。4.3数据库的查看查看是数据库的常用操作,通常可以在两种界面上查看:企业管理器和查询分析器。4.3.1用企业管理器查看数据库信息在企业管理器的控制台根目录中选中所要查看的数据库,并选择“查看”菜单中的“任务板”命令,右边窗口中就会显示该数据库的相关信息,如图4-2所示,其中包括:

(1)数据库信息:数据库拥有者、创建时间、大小、用户个数等。

(2)维护信息:关于备份和维护的信息。

(3)已分配空间信息:所有数据文件和日志文件的空间使用情况。图4-2Pubs数据库的信息

要查看pubs数据库的属性,设置和修改pubs数据库的属性及选项,可以进行如下操作:双击pubs数据库图标或用鼠标右键单击该数据库名或图标,在弹出的快捷菜单中选择“属性”命令,即可打开该数据库的属性窗口。在该窗口中可以查看数据库属性信息,并可设置和修改数据库的属性和选项设置,如图4-3所示。数据库属性窗口有“常规”、“数据文件”、“事务日志”、“文件组”、“选项”和“权限”等6个选项卡。

(1)“常规”选项卡:可以查看数据库、备份、维护等方面的基本信息,如图4-4所示。图4-3数据库属性图4-4“常规”选项卡(2)“数据文件”选项卡:可对数据文件(主数据文件和辅助数据文件)的初始容量、最大容量、增长量进行设置修改,也可以设置在哪一个文件组中进行文件的增删(这将影响文件组中包含文件的数量),确定新增文件的名称和物理位置,如图4-5所示。

(3)“事务日志”选项卡:可对日志文件的初始容量、最大容量、增长量进行设置和修改,也可以新增或删除日志文件,但不影响文件组,如图4-6所示。

(4)“文件组”选项卡:可增删文件组,对文件组名称、组内文件数、只读属性及默认值进行查询、设置和修改,如图4-7所示。图4-5“数据文件”选项卡图4-6“事务日志”选项卡图4-7“文件组”选项卡(5)“选项”选项卡:可对数据库的访问权限及多项属性进行设置和修改,如图4-8所示。(6)“权限”选项卡:该选项卡以后再作介绍。图4-8“选项”选项卡4.3.2用查询分析器查看数据库信息在查询分析器中查看数据库要使用系统存储过程sp_helpdb。语法:

[EXECUTE]sp_helpdb[数据库名]EXECUTE可以缩写为EXEC,如果它是一个批处理中的第一个语句,则可全部省略。如省略数据库名,则可查看所有数据库信息。

【例4-1】在查询分析器中用sp_helpdb语句查看所有数据库信息。在查询分析器中输入代码:

execsp_helpdb

单击“运行”按钮,运行结果如图4-9所示。图4-9查看所有数据库信息

【例4-2】在查询分析器中用sp_helpdb语句查看pubs数据库信息。在查询分析器中输入代码:

execsp_helpdbpubs

按“F5”键或单击“运行”按钮,运行结果如图4-10所示。另外,使用系统存储过程sp_databases可以查看所有可用数据库的名称和大小;使用系统存储过程sp_helpfile可以查看当前数据库中某个文件的名称、位置和大小;使用系统存储过程sp_helpfilegroup可以查看当前数据库中某个文件组的名称、编号和包含的文件数。图4-10查看pubs数据库信息4.4数据库的建立创建数据库的一般原则是:将与业务相关的数据集合放在一个数据库中,以方便使用者的管理,不要把无关的多个数据集合放在一个数据库中。创建数据库需要一定的许可,在默认情况下,只有系统管理员和数据库拥有者可以创建数据库。当然,也可以把这种许可授权给其他用户。数据库被创建后,创建数据库的用户自动成为该数据库的所有者。每个数据库都由以下几个部分组成:关系图、表、视图、存储过程、用户、角色、规则、默认值、用户自定义数据类型和用户自定义函数。SQLServer使用一个公共模板来创建数据库,每个服务器中最多可以创建32767个数据库。数据库的名称必须满足系统规定的标识符命名规则,最好使用有意义的名称命名数据库。每个数据库必须有一个唯一的数据库名,以对其进行标识(在所在的数据库实例中唯一即可)。数据库名称必须符合SQLServer标识符的构成规则:(1)由字母、汉字、数字、下划线组成。(2)不能以数字开头,不能是关键字。(4)最长不超过128个字符。

创建数据库除了为数据库设计名称外,还要设计数据库所占用的存储空间大小和存放文件位置等。数据库的基本信息存储在master数据库中的sysdatabases系统表中,因而可以使用SELECT语句来查询数据库信息。创建数据库的方法有以下三种:使用向导、使用企业管理器和使用Transact-SQL语言。4.4.1使用向导创建数据库使用向导创建数据库的步骤如下:

(1)在企业管理器中,首先选中欲创建数据库的服务器节点,然后从“工具”菜单中选择“向导”选项,或在工具栏中选择图标,将出现如图4-11所示的“选择向导”对话框。图4-11“选择向导”对话框(2)在图4-11中双击“注册服务器向导”命令,或者选择“注册服务器向导”命令后单击“确定”按钮,出现“欢迎使用创建数据库向导”对话框,如图4-12所示。

(3)单击“下一步”按钮,出现“命名数据库并指定它的位置”对话框,如图4-13所示。在该对话框中,在第一个文本框中要填写即将创建的数据库名称,在第二个文本框中填写该数据库文件的存放位置,在第三个文本框中填写数据库事务日志文件的存放位置。输入数据库名称时要注意符合系统的命名规则。选择文件的存储位置时,可以单击文本框右端的“”按钮来选择对应的文件路径。图4-12“欢迎使用创建数据库向导”对话框图4-13“命名数据库并指定它的位置”对话框(4)单击“下一步”按钮,出现“命名数据库文件”对话框,如图4-14所示。在该对话框中可以修改数据库文件的文件名和该文件的大小。在默认情况下,数据库文件的文件名为:数据库名_Data,初始大小为1MB。

(5)单击“下一步”按钮,出现“定义数据库文件的增长”对话框,如图4-15所示。在该对话框中可以定义是否允许数据库自动增长以及数据库增长的比例。如果选择“数据库文件自动增长”选项,则需要选择其增长的方式,是以兆字节为单位增长还是按照数据库的百分比增长。另外,在该对话框中还可以限制数据库文件增长的最大尺寸。如果不限制数据库文件的最大尺寸,那么数据库文件就会一直增长,直到把整个磁盘空间占满为止。图4-14“命名数据库文件”对话框图4-15“定义数据库文件的增长”对话框(6)单击“下一步”按钮,出现“命名事务日志文件”对话框,如图4-16所示。在该对话框中,除了可以指定日志文件的名称外,还可以指定该日志文件的初始大小。在默认情况下,初始文件大小为1MB。

(7)在图4-16中单击“下一步”按钮,出现“定义事务日志文件的增长”对话框,如图4-17所示。在该对话框中可以定义是否允许数据库的事务日志文件自动增长及其增长的比例。如果选择“事务日志文件自动增长”选项,则需要选择其增长方式,是以兆字节为单位增长还是按照数据库的百分比增长。另外,该对话框还可以限制数据库日志文件增长的最大尺寸。如果不限制数据库日志文件的最大尺寸,那么数据库日志文件就会一直增长,直到把整个磁盘空间占满为止。图4-16“命名事务日志文件”对话框图4-17“定义事务日志文件的增长”对话框(8)在图4-17中单击“下一步”按钮,就会出现“正在完成创建数据库向导”对话框,如图4-18所示,此时系统并没有真正创建数据库。如果前面的定义有问题或者需要更改,则可以单击“上一步”按钮返回修改;如果确认没有问题,则单击“完成”按钮即可创建该数据库。图4-18完成创建数据库4.4.2使用企业管理器创建数据库使用企业管理器创建数据库的步骤如下:

(1)在企业管理器中,单击工具栏中的图标,也可在数据库文件夹或其下属任一数据库图标上右击,从弹出的快捷菜单中选择“新建数据库”选项,出现如图4-19所示的“数据库属性”窗口。

(2)在“常规”选项卡中,要求用户输入数据库名称以及排序规则名称(通常为默认)。

(3)单击“数据文件”选项卡,该选项卡用来输入数据库文件的名称、存储位置、初始容量大小和所属文件组名称,如图4-20所示。选项卡的下方是设置文件增长信息的部分,首先选择是否允许文件自动增长,然后设置文件的增长方式和允许的数据文件的最大尺寸。图4-19“数据库属性”窗口图4-20“数据文件”选项卡(4)单击“事务日志”选项卡,该选项卡用来设置事务日志文件信息,如图4-21所示。在“文件名”列表框中可以输入事务日志文件的信息,包括事务日志文件名称、存储位置、初始大小。最下面的部分是设置事务日志文件增长信息的部分,首先选择是否允许文件自动增长,然后设置文件的增长方式和允许的事务日志文件的最大尺寸。

(5)单击图4-21中的“确定”按钮,就开始创建新的数据库。图4-21“事务日志”选项卡4.4.3使用Transact-SQL语言创建数据库

Transact-SQL语言使用CREATEDATABASE命令来创建数据库。该命令的语法如下:CREATEDATABASEdatabase_name[ON[<filespec>[,...n]][,<filegroup>[,...n]]][LOGON{<filespec>[,...n]}][COLLATEcollation_name][FORLOAD|FORATTACH]<filespec>::=[PRIMARY]([NAME=logical_file_name,]FILENAME='os_file_name'[,SIZE=size][,MAXSIZE={max_size|UNLIMITED}][,FILEGROWTH=growth_increment])[,...n]<filegroup>::=FILEGROUPfilegroup_name<filespec>[,...n]

说明:在Transact-SQL语言的命令格式中,用[]括起来的内容表示是可选的;[,…n]表示重复前面的内容;用<>括起来的表示在实际编写语句时用相应的内容替代;用{}括起来的表示是必选的;类似A|B的格式,表示A和B只能选择一个,不能同时都选。CREATEDATABASE命令中各参数的说明如下:● database_name:新数据库的名称。数据库名称在数据库服务器中必须唯一,最长为128个字符,并且要符合标识符的命名规则。每个服务器管理的数据库最多为32767个。● ON:指定存放数据库的数据文件信息。该关键字后面可以包含用逗号分隔的filespec列表,filespec列表用于定义主文件组的数据文件。主文件组的文件列表后可以包含用逗号分隔的filegroup列表,filegroup列表用于定义用户文件组及其中的文件。● PRIMARY:用于指定主文件组中的文件。主文件组不仅包含数据库系统表中的全部内容,而且还包含用户文件组中没有包含的全部对象。主文件组的第一个由filespec指定的文件是主文件,该文件包含数据库的逻辑起点及其系统表。一个数据库只能有一个主文件,默认情况下,如果不指定PRIMARY关键字,则在命令中列出的第一个文件将被默认为主文件。● LOGON:指明事务日志文件的明确定义。如果没有本选项,则系统会自动产生一个文件名前缀与数据库名相同,容量为所有数据库文件大小1/4的事务日志文件。● FORLOAD:表示计划将备份直接装入新建的数据库,主要是为了和过去的SQLServer版本兼容。● FORATTACH:表示在一组已经存在的操作系统文件中建立一个新的数据库。● NAME:指定数据库的逻辑名称。这是在SQLServer系统中使用的名称,是数据库在SQLServer中的标识符。● FILENAME:指定数据库所在文件的操作系统文件名称和路径,该操作系统文件名称和NAME的逻辑名称一一对应。● SIZE:指定数据库的初始容量大小。如果没有指定主文件的大小,则SQLServer默认其与模板数据库中的主文件大小一致,其他数据库文件和事务日志文件则默认为1MB。指定大小的数字其SIZE可以使用KB、MB、GB和TB后缀,默认的后缀为MB。SIZE中不能使用小数,其最小值为512KB,默认值为1MB。主文件的SIZE不能小于模板数据库中的主文件。● MAXSIZE:指定操作系统文件可以增长到的最大尺寸。如果没有指定,则文件可以不断增长直到充满磁盘。● FILEGROWTH:指定文件每次增加容量的大小。当指定数据为0时,表示文件不自动增长;当容量不够时,需由人工增加。增加量是由数字和后缀(KB、MB、%)表示的,后缀%表示该文件可增加百分之多少。默认后缀为MB。如果没有指定FILEGROWTH,则默认值为10%。每次增加容量的最小值为64KB,计算后的增加容量值是64K的倍数。

在使用CREATEDATABASE命令创建数据库的过程中,SQLServer用模板数据库(model)来初始化新建的数据库。在模板数据库中,所有用户定义的对象和数据库的设置都会被复制到新数据库中。在理想的情况下,只有有限的用户可以被授权创建数据库。系统安装后,只有系统管理员有这个特权,系统管理员可以将这个特权授予其他用户。数据库的创建者被默认为该数据库的所有者,可以通过sp_changedbowner系统存储过程来更改数据库所有者。

【例4-3】使用CREATEDATABASE创建一个Sales数据库,所有参数均取默认值。程序清单如下:

CREATEDATABASESales

系统输出结果如下:

CREATEDATABASE进程正在磁盘'Sales'上分配0.75MB的空间。

CREATEDATABASE进程正在磁盘‘Sales_log’上分配0.49MB的空间。说明:这是最简单的创建数据库的命令。由于没有指定主文件和日志文件,因此在默认情况下,命名主文件为Sales.mdf,日志文件为Sales_log.ldf。同时,由于是按照model数据库的方式来创建的数据库,因此主文件和日志文件的大小与model数据库的主文件和日志文件的大小相同。由于没有指定主文件和日志文件的最大长度,因此主文件和日志文件都可以自由增长,直到充满整个硬盘空间。

【例4-4】创建一个Student数据库。该数据库的主文件逻辑名称为Student_data,物理文件名为Student.mdf,初始大小为10MB,最大尺寸为无限大,增长速度为10%;数据库的日志文件逻辑名称为Student_log,物理文件名为Student.ldf,初始大小为1MB,最大尺寸为5MB,增长速度为每次1MB。程序清单如下:

CREATEDATABASEStudent0NPRIMARY(NAME=Student_data,

FILENAME='e:\data\Student.mdf',SIZE=10,MAXSIZE=unlimited,--最大尺寸为无限大,一般要设置一个有限数值FILEGROWTH=10%)LOGON(NAME=Student_log,

FILENAME='e:\data\Student.ldf',

SIZE=1,

MAXSIZE=5,

FILEGROWTH=1)

系统输出结果如下:

CREATEDATABASE进程正在磁盘‘student_data’上分配10.00MB的空间。

CREATEDATABASE进程正在磁盘'student_log'上分配1.00MB的空间。

注意:“e:\data”必须事先创建好,FILENAME项要用单引号。【例4-5】创建一个指定多个数据文件和日志文件的数据库。该数据库名称为students,有一个10MB和一个20MB的数据文件及两个10MB的事务日志文件。数据文件指定在主文件组中,逻辑名称为student1和student2,物理文件名为student1.mdf和student2.ndf,两个数据文件的最大尺寸分别为80MB和100MB,增长速度分别为10%和1MB。事务日志文件的逻辑名为studentlog1和studentlog2,物理文件名为studentlog1.ldf和studentlog2.ldf,最大尺寸均为50MB,文件增长速度为1MB。程序清单如下:

CREATEDATABASEstudentsONPRIMARY(NAME=student1,FILENAME='e:\data\student1.mdf',

SIZE=10,

MAXSIZE=80,FILEGROWTH=10%),--注意这里要有“,”,因为下面是“(”(NAME=student2,

FILENAME='f:\data\student2.ndf',

SIZE=20,

MAXSIZE=100,

FILEGROWTH=1)--注意这里不要“,”,因为下面不是“(”LOGON(NAME=studentlog1,

FILENAME='j:\data\studentlog1.ldf',

SIZE=10,MAXSIZE=50,

FILEGROWTH=1),

(NAME=studentlog2,

FILENAME='k:\data\studentlog2.ldf',

SIZE=10,

MAXSIZE=50,

FILEGROWTH=1)

注意:如果磁盘空间足够大,则可以将日志文件和数据文件放在同一磁盘上,但从安全和性能上考虑,日志文件和数据文件应分别放在不同的物理磁盘上。4.5数据库的删除对于那些不再需要的数据库,可以删除它以释放在磁盘上占用的空间。删除数据库有两种方式,即利用企业管理器和利用DROP语句。4.5.1利用企业管理器删除数据库在企业管理器中,找到所要删除的数据库并右击,从弹出的快捷菜单中选择“删除”选项,或单击所要删除的数据库,再按下键盘上的Delete键,即可删除数据库,也可以选择数据库文件夹或图标后单击工具栏中表示删除的图标来删除数据库。系统会弹出“确认是否要删除数据库”对话框,单击“是”按钮,则删除该数据库。删除数据库一定要慎重,因为系统无法轻易恢复被删除的数据,除非做过数据库备份。使用这种方法每次只能删除一个数据库。4.5.2利用DROP语句删除数据库利用DROP语句可以从SQLServer中一次删除一个或多个数据库。其语法如下:

DROPDATABASEdatabase_name[,…n]【例4-6】使用DROP语句删除已创建的数据库students。程序清单如下:

DROPDATABASEstudents

系统输出结果为

正在删除数据库文件'k:\data\studentlog2.ldf'。正在删除数据库文件'f:\data\student2.ndf'。正在删除数据库文件'j:\data\studentlog1.ldf'。正在删除数据库文件'e:\data\student1.mdf'。说明:不是所有的数据库在任何时候都可以被删除,只有处于正常状态下的数据库才能使用DROP语句删除。当数据库处于以下状态时不能被删除:数据库正在使用;数据库正在恢复;数据库包含用于复制的、已经出版的对象。4.6数据库的移动如果要把数据库从一个SQLServer系统中移动到另一个SQLServer系统,或者把数据文件从一个磁盘移到另一个磁盘上,则可以先将数据库与SQLServer系统分离,然后把数据库文件复制到其他磁盘上,再将数据库重新附加到原来的系统中或附加到另一个系统中。数据库的附加是数据库物理文件在数据库系统中重新挂钩的过程。分离数据库实际上只是从SQLServer系统中把某数据库与其对应的数据文件和事务日志文件脱钩,组成该数据库的数据文件和事务日志文件依然完好无损地保存在磁盘上。分离后的数据库可以再附加到任何SQLServer系统中,而且数据库在新系统中的使用状态与它分离时的状态完全相同。分离前,数据库文件和日志文件不可以复制或者删除,分离后就可以了。4.6.1使用企业管理器分离数据库

使用企业管理器分离数据库的过程如下:

(1)选中要分离的数据库,选择“操作”菜单中的“所有任务”,或者直接右击要分离的数据库,在弹出的快捷菜单中选择“所有任务”,然后再选择其子菜单中的“分离数据库”命令,将出现“分离数据库”对话框。

(2)在“分离数据库”对话框中,检查数据库的状态,包括与当前数据库的联接数和是否正在执行复制数据库操作。

注意:如果有用户正在联接数据库或者正在执行复制数据库操作,则不能分离数据库,此时若要执行分离操作,则必须先单击“清除”按钮清除联接。在此对话框中还可以选择是否“在分离前更新数据库统计信息”。(3)单击“确定”按钮完成数据库的分离。已分离的数据库将不再出现在SQLServer系统中,但是此数据库的相关文件仍然可以从数据库文件原先的文件夹中找到。4.6.2使用sp_detach_db语句分离数据库使用sp_detach_db语句分离数据库的语法格式如下:

execsp_detach_db数据库名称[,true|false]

其中,“数据库名称”指定要分离的数据库;第二个参数指定是否在分离数据库前更新数据库统计信息,取false为指定更新数据库统计信息,取true或省略则不更新数据库统计信息。下面的语句用来从系统中分离Sales数据库,不更新数据库统计信息。

execsp_detach_db'Sales','true'4.6.3使用企业管理器附加数据库使用企业管理器附加数据库的过程如下:

(1)在企业管理器中选中数据库节点,选择“操作”菜单中的“所有任务”,或者直接右击数据库节点,在弹出的快捷菜单中选择“所有任务”,然后再选择其子菜单中的“附加数据库”命令,弹出如图4-22所示的“附加数据库”对话框。

(2)在“附加数据库”对话框的“要附加数据库的MDF文件”文本框中直接输入要附加到SQLServer系统的数据库主数据文件的路径与文件名,或者单击该文本框右侧的“”按钮,在弹出的“浏览现有的文件”对话框中展开路径查找并选中数据库主数据文件。图4-22“附加数据库”对话框(3)如果要附加数据库的事务日志文件或辅助数据文件与主数据文件不在一个磁盘或一个文件夹内,则该文件的“当前文件位置”前面出现错误符号,可以修改为正确路径(或者把它们与主数据文件存放在一个文件夹中),在出现正确符号后,单击“确定”就可以把指定数据库附加到当前的SQLServer系统中。4.6.4使用sp_attach_db语句附加数据库下面的示例将pubs中的两个文件附加到当前服务器。在查询分析器中输入:

execsp_attach_db@dbname=N'pubs',

@filename1=N'c:\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\pubs.mdf',

@filename2=N'c:\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\pubs_log.ldf'

就可以把已经分离的pubs数据库的文件重新附加到数据库系统中。4.7数据库的其他操作除了前面章节讲到的数据库操作外,还有一些其他操作。4.7.1数据库的选项修改利用企业管理器的数据库属性中的“选项”选项卡可对数据库的访问权限及多项属性进行设置和修改。其中,常用选项如下:●限制访问:可选择仅允许db_owner、dbcreator或sysadmin成员访问数据库,也可选择“单用户”,即只允许一个用户访问,一个用户退出后另一个用户才能登录,这样管理员可以保证除了自己没有其他用户在使用系统。●只读:数据库中的数据只能读取,不能修改。●自动关闭:当最后一个用户退出后,系统自动关闭该数据库,释放占用的资源;当又有新的用户要求联接时,数据库自动打开。●自动收缩:数据删除后若文件中的未用空间超过文件的25%,则将自动缩小文件,但不会小于设定的初始容量。如果设置只读,则这个选项无效。通常这个选项设为“不选中”,当未用空间超过文件的25%时,需要数据库管理员手工缩小,其好处是可以避免在系统忙时自动缩小文件。●ANSINULL默认设置:允许在数据库表的列中输入空(NULL)值。●递归触发器:允许触发器递归调用。最多为32层。●自动更新统计信息:允许使用S

温馨提示

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

评论

0/150

提交评论