网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > SQL语法 > 正文

SQL_Server_2008教程

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

    配置工具”|SQLServerConfigurationManager选项,打开SQLServerConfigurationManager窗口,如图2.23所示。
    当前已经安装的SQLServer服务
    图2.23
    SQLServerConfigurationManager窗口
    2、在左侧窗口中,选择“SQLServer2005服务”选项,在右侧窗口中即可看到当前已经安装的SQLServer服务。在服务名称上右击,即可弹出一个快捷菜单,如图2.24所示。通过其中的“启动”、“停止”、“暂停”和“重新启动”等命令即可启动和停止相应的服务。图2.24停止服务启动和
    3、双击某个服务,即可打开该服务的“SQLServer(MSSQLSERVER)属性”对话框,如图2.25所示。默认打开的是“登录”选项卡,在该选项卡中,可以设置服务账户。也可以通过单击“服务状态”下的按钮来启动或停止服务。
    图2.25“SQLServer(MSSQLSERVER)属性”对话框
    1
    4、单击这些按钮可以启动或者停止服务5、如果要设置服务的启动模式,则可以单击“服务”标签,打开“服务”选项卡。选择“启动模式”选项,然后单击右侧的下拉列表框,从出现的下拉列表中可以选择服务的启动模式,如图2.26所示。图2.26示重新启动服务,单击“是”按钮即可。2.网络配置通过SQL可以设置SQLServer2005的网络配置。操作步骤如下:打开“开始”菜单,次选择依“程序”MicrosoftSQLServer|2005|“配置工具”|SQLServerConfigurationManager选项,打开SQLServerConfigurationManager窗口。在左侧窗口中,通过双击依次打开“SQLServer2005网络配置”|“MSSQLS-ERVER的协议”选项,在右侧窗口中即可看到SQLServer2005支持的网络协议,如图2.27所示。双击某个网络协议,即可打开该协议的属性对话框,用户可以通过该对话框对网络协议进行配置。例如,双击TCP/IP,即可打开“TCP/IP属性”对话框,如图2.28所图2.27SQLServer2005支持的网络协议ServerConfigurationManager配置工具,“服务”选项卡
    6、设置完成后,单击“确定”按钮,系统提
    2
    示。通过该选项卡可以设置IP地址和端口等信息
    图2.283.客户端配置
    “TCP/IP属性”对话框
    如果要在客户端连接远程的SQLServer2005服务器,需要在则客户端计算机上安装并配置网络协议。操作步骤如下:打开“开始”菜单,依次选择“程序”MicrosoftSQLServer|2005“配置工具”SQLConfigurationManager选项,开SQLServer||打ConfigurationManager窗口。在左侧窗口中,双击打开“SQLNativeClient配置”,然后
    实讲实训多媒体演示多媒体演示参见配套光盘中的\\视频\第2章\客户端配置.avi。
    双击“客户端协议”。在右侧窗口中即可看到客户端已经配置的网络协议,如图2.29所示。
    图2.29
    SQLServerConfigurationManager窗口
    双击某个网络协议,即可打开该协议的属性对话框,用户可以通过该对话框对网络协议进行配置。2.4.5性能工具
    SQLServer2005提供了SQLServerProfiler和数据引擎优化顾问两个性能工具。下面分别进行介绍。
    3
    1.SQLServerProfilerMicrosoftSQLServerProfiler是SQL跟踪的图形用户界面,用于监视SQLServerData-baseEngine或SQLServerAnalysisServices的实例。可以捕获有关每个事件的数据并将其保存到文件或表中供以后分析。例如,可以对生产环境进行监视,了解哪些存储过程由于执行速度太慢影响了性能。启动和使用SQLServerProfiler的操作步骤如下:打开“开始”菜单,次选择依“程序”MicrosoftSQLServer|2005|“性能工具”|SQLServerProfiler选项,打开SQLServerProfiler窗口。提实讲实训多媒体演示多媒体演示参见配套光盘中的\\视频\第2章\Profiler.avi。
    示通过下面两种方式也可以打开SQLServerProfiler窗口:在SQLServerManagementStudio的“工具”菜单上,单击SQLServerProfiler;在数据库引擎优化顾问的“工具”菜单上,单击SQLServerProfiler。在“文件”菜单上,选择“新建跟踪”选项,打开“连接到服务器”对话框,选择要连接的服务器,并设置相应的登录模式。单击“连接”按钮,打开“跟踪属性”对话框,如图2.30所示。在“常规”选项卡中,可以设置“跟踪名称”“使用模板”和“启用跟踪起止时间”等选项。、
    图2.30
    “跟踪属性”对话框
    单击“事件选择”标签,打开“事件选择”选项卡,如图2.31所示。在该选项卡中,可以设置要跟踪的事件和事件列。设置完成后,单击“运行”按钮即可开始跟踪。
    4
    图2.312.数据库引擎优化顾问借助MicrosoftSQLServer
    “事件选择”选项卡
    2005数据库引擎优化顾问,用户不必精通数据库结构或
    MicrosoftSQLServer的精髓,即可选择和创建索引、索引视图和分区的最佳集合。数据库引擎优化顾问分析一个或多个数据库的工作负荷和物理实现。工作负荷是对要优化的一个或多个数据库执行的一组Transact-SQL语句。在优化数据库时,数据库引擎优化顾问将使用跟踪文件、跟踪表或Transact-SQL脚本作为工作负荷输入。可以在SQLServerManagementStudio中使用查询编辑器创建Transact-SQL脚本工作负荷。可以通过使用SQLServerProfiler中的优化模板来创建跟踪文件和跟踪表工作负荷。启动和使用数据库引擎优化顾问的操作步骤如下:打开“开始”菜单,依次选择“程序”|MicrosoftSQLServer2005|“性能工具”|“数据库引擎优化顾问”选项,打开“连接服务器”对话框。选择要连接的服务器,并设置相应的登录模式。然后单击“连接”按钮,连接成功后,弹出DatabaseEngineTuningAdviser窗口,如图2.32所示。
    图2.32
    DatabaseEngineTuningAdviser窗口
    5
    在“常规”选项卡中,选择“工作负荷”中的“文件”或“表”选项,并设置“用于工作负荷分析的数据库”。其中工作负荷由保存在文件或表中Transact-SQL脚本或SQLServerProfiler跟踪组成。在“优化选项”选项卡中,可以设置用于优化的一些选项。设置完成后,单击工具栏中的“开始分析”按钮,即可开始优化分析。除了上面的启动数据库引擎优化顾问操作步骤外,还可以在SQLServerManagementStudio窗口或者SQLServerProfiler窗口的“工具”菜单中,单击“数据库引擎优化顾问”来启动数据库引擎优化顾问。另外,也可以在SQLServerManagementStudio查询编辑器中,直接选择输入的Transact-SQL语句,然后右击鼠标,在弹出的快捷菜单中,选择“在数据库引擎优化顾问中分析查询”选项。此时将打开数据库引擎优化顾问图形用户界面,并将该脚本作为XML文件工作负荷导入。可以指定会话名称和优化选项,以将选定的Transact-SQL查询作为工作负荷进行优化。提示可以使用命令行工具程序dta.exe来实现数据库引擎优化顾问的功能。2.4.6文档和教程
    MicrosoftSQLServer联机丛书是MicrosoftSQLServer2005的文档集。联机丛书涵盖了有效使用SQLServer所需的概念和过程。联机丛书还包括了使用SQLServer存储、检索、报告和修改数据时所使用的语言和编程接口的参考资料。打开和使用联机丛书的操作过程如下:打开“开始”菜单,依次选择“所有程序”|MicrosoftSQLServer2005|“文档和教程”|“SQLServer联机丛书”选项,即可打开“联机丛书-MicrosoftSQLServer2005”窗口,如图2.33所示。
    图2.33
    “联机丛书-MicrosoftSQLServer2005”窗口
    可以按照目录来查找需要的内容;也可以通过“搜索”选项卡来寻找需要的内容。
    6
    2.5
    管理SQLServer服务器服务器是SQLServer数据库管理系统的核心,管理服务器可以通过SQLServer
    ManagementStudio管理平台来完成。2.5.1管理服务器组实讲实训多媒体演示多媒体演示参见配套光盘中的\\视频\第2章\管理服务器组.avi。
    在一个客户端上可以同时管理多个SQLServer服务器。可以将多个SQLServer服务器分类汇总到不同的服务器组中,以方便管理。创建和使用服务器组的操作步骤如下:打开“开始”菜单,依次选择“程序”|MicrosoftSQLServer2005|SQL口中,右击鼠标,在快捷菜单中选择“新建”|“服务器组”命令,打开“新建服务器组”对话框,如图2.34所示。ServerManagementStudio选项,打开SQLServer
    ManagementStudio窗口。连接到服务器,然后在打开的“已注册的服务器”窗
    输入服务器组名称。
    选择新服务器组要放置的位置。
    图2.34
    “新建服务器组”对话框
    设置完成后,单击“保存”按钮,即可创建一个服务器组,如图2.35所示。这里创建的服务器组是SLQSERVER1。
    图2.35
    新创建的服务器组
    7
    如果要将已注册的服务器移动到该服务器组中,则可右击服务器名称,在弹出的快捷菜单上,选择“移到”选项,打开“移动服务器注册”对话框。选择服务器组名称,如图2.36所示。单击“确定”按钮,即可将服务器liuasus移到服务器组SQLSERVER1中,如图2.37所示。
    图2.362.5.2注册服务器
    “移动服务器注册”对话框
    图2.37
    将服务器移到服务器组中
    在SQLServerManagementStudio中注册服务器可以存储服务器连接信息,以供将来连接时使用。在注册服务器时必须指定:yyy服务器的类型,在MicrosoftSQLServer2005中,可以注册下列类型的服务器:数据库引擎、AnalysisServices、ReportingServices、IntegrationServices和SQLServerMobile。服务器的名称。登录到服务器时使用的身份验证的类型。实讲实训多媒体演示多媒体演示参见配套光盘中的\\视频\第2章\注册服务器.avi。
    注册服务器的操作步骤如下:打开“开始”菜单,次选择依“程序”MicrosoftSQLServer2005||SQLServerManagementStudio选项,打开SQLServerManagementStudio窗口。在“已注册的服务器”窗口中,右击鼠标,在快捷菜单的“新建”选项中,选择“服务器注册”选项,打开“新建服务器注册”对话框,如图2.38所示。
    8
    选择服务器或直接输入服务器名。在“连接属性”选项卡中,可以设置网络协议以及连接到的数据库等选项。
    选择身份验证模式。
    图2.38
    “新建服务器注册”对话框
    设置完成后,单击“测试”按钮,测试到新建服务器的连接。如果配置成功,则会打开“新建服务器注册”对话框,提示连接测试成功,如图2.39所示。
    图2.39
    提示连接测试成功
    测试成功后,单击“保存”按钮,保存新建的服务器注册。如果要修改服务器注册,则可以右击要修改的服务器实例,然后选择快捷菜单中的“属性”选项,在打开的“编辑服务器注册属性”对话框中,用户可以修改服务器的身份验证模式和服务器名称等信息。如果要删除服务器实例,则可以右击要删除的服务器实例,然后选择快捷菜单中的“删除”选项,在弹出的确认删除对话框中单击“是”按钮,即可删除服务器实例。2.6课堂演练在服务器上注册一个SQLServer服务器。操作步骤如下:打开SQLServerManagementStudio。
    9
    在“已注册的服务器”窗口中,右击鼠标,在快捷菜单的“新建”选项中,选择“服务器注册”选项,打开“新建服务器注册”对话框。设置服务器名称和身份验证模式。单击“测试”按钮,测试到新建服务器的连接。如果配置成功,则会打开“新建服务器注册”对话框,提示连接测试成功。测试成功后,单击“保存”按钮,保存新建的服务器注册。2.7小结
    本章介绍了安装SQLServer2005的安装选项及具体安装步骤,并对SQLServer2005的组件功能、SQLServerManagementStudio管理平台、性能工具、配置工具、AnalysisServices和服务器的管理等进行了介绍。在SQLServer2005中的安装中,关键是要理解各个选项的设置,主要包括服务账户和验证模式等设置。SQLServer2005是一个功能很强的数据库管理系统,它包含了几个用于数据库以及安全性配置的工具。在本章中,对这些管理工具和服务器的管理进行了简要介绍,使读者在使用SQLServer2005以前有一个全面的认识。2.82.8.1课后练习简答题
    (1)简述服务账户的概念。(2)简述SQLServer2005的组件及其功能。(3)SQLServerManagementStudio的功能有哪些?2.8.2操作题(1)安装SQLServer2005,了解安装步骤和注意事项。(2)试着使用SQLServer2005的工具和教程。
    10
    第3章03数据库和表本章导读:数据库文件页和区的概念事务日志查看数据库属性数据库的建立数据库的删除表的建立表的删除Chapter
    3.1
    数据库存储结构
    数据库的存储结构分为逻辑存储结构和物理存储结构。数据库的逻辑存储结构指的是数据库的性质信息等。SQLServer数据库是由表、视图和索引等各种不同的数据库对象所组成,它们分别存储数据库的特定信息,构成了数据库的逻辑存储结构。数据库的物理存储结构则指的是磁盘上存储的数据库文件。数据库文件由数据库文件和事务日志文件组成,保存在物理介质的NTFS分区或者FAT分区上,它预先分配了将要被数据库和事务日志所使用的物理存储空间。3.1.1数据库文件和文件组
    SQLServer2005将数据库映射为一组操作系统文件。数据和日志信息从不混合在相同的文件中,而且各文件仅在一个数据库中使用。文件组是命名的文件集合,用于帮助数据布局和管理任务,例如备份和还原操作。SQLServer2005数据库具有3种类型的文件:y主数据文件主数据文件是数据库的起点,指向数据库中的其他文件。每个数据库都有一个主数据文件。主数据文件的推荐文件扩展名是.mdf。y次要数据文件除主数据文件以外的所有其他数据文件都是次要数据文件。某些数据库可能不含有任何次要数据文件,而有些数据库则含有多个次要数据文件。次要数据文件的推荐文件扩展名是.ndf。y日志文件日志文件包含着用于恢复数据库的所有日志信息。每个数据库必须至少有一个日志文件,当然也可以有多个。日志文件的推荐文件扩展名是.ldf。
    Chapter03数据库和表
    第3章
    注
    意SQLServer2005不强制使用.mdf、.ndf和.ldf文件扩展名,但使用它们有助于标识文件的各种类型和用途。
    在SQLServer2005中,数据库中所有文件的位置都记录在数据库的主文件和master数据库中。大多数情况下,数据库引擎使用master数据库中的文件位置信息。但是,在以下情况中,数据库引擎使用主文件中的文件位置信息来初始化master数据库中的文件位置项:yyy使用带有FORATTACH或FORATTACH_REBUILD_LOG选项的CREATEDATABASE语句
    来附加数据库时。关于CREATEDATABASE语句的详细使用,以参看附录B。可从SQLServer2000版或7.0版升级到SQLServer2005时。还原master数据库时。
    为便于数据库文件的分配和管理,可以将数据库对象和文件一起分成文件组。有两种类型的文件组:y主文件组主文件组包含主数据文件和任何没有明确分配给其他文件组的其他文件。系统表的所有页均分配在主文件组中。y用户定义文件组用户定义文件组是通过在CREATEDATABASE或ALTERDATABASE语句中使用FILEGROUP关键字指定的任何文件组。一个文件不可以是多个文件组的成员。表、索引和大型对象数据可以与指定的文件组相关联。在这种情况下,它们的所有页将被分配到该文件组,或者对表和索引进行分区。已分区表和索引的数据被分割为单元,每个单元可以放置在数据库中的单独文件组中。每个数据库中均有一个文件组被指定为默认文件组。如果创建表或索引时未指定文件组,则将假定所有页都从默认文件组分配。一次只能有一个文件组作为默认文件组。注意日志文件不包括在文件组内。日志空间与数据空间分开管理。
    SQLServer2005文件可以从它们最初指定的大小开始,随数据的增加而自动增长。在定义文件时,可以指定一个特定的增量。每次填充文件时,其大小均按此增量来增长。如果文件组中有多个文件,则它们在所有文件被填满之前不会自动增长。填满后,这些文件会循环增长。每个文件还可以指定一个最大大小。如果没有指定最大大小,文件可以一直增长到用完磁盘上的所有可用空间。如果SQLServer作为数据库嵌入某应用程序,而该应用程序的用户无法迅速与系统管理员联系,则此功能就特别有用。用户可以使文件根据需要自动增长,以减轻监视数据库中的可用空间和手动分配额外空间的管理负担。3.1.2页和区
    在创建数据库对象时,SQLServer会使用一些特定的数据结构给数据对象分配空间,即页和区。它们和数据库及其文件间的关系如图3.1所示。
    54
    Chapter03数据库和表
    第3章
    数据库
    数据文件.mdf或者.ndf
    日志文件.ldf
    表、索引
    区(8个连续页面)
    数据页(8KB)最大行长度为8080字节
    图3.1
    数据库的存储结构
    1.页SQLServer中数据存储的基本单位是页(page)。为数据库中的数据文件(.mdf或.ndf)分配的磁盘空间可以从逻辑上划分成页(从0到n连续编号)。磁盘I/O操作在页级执行。也就是说,SQLServer读取或写入所有数据页。SQLServer中的所有信息都存储在页上,页是数据库中使用的最小数据单元。每一个页存储8KB(8192字节)的信息,所有的页都包含一个132字节的页面头,这样就留下8060字节存储数据。页头被SQLServer用来唯一地标识存储在页中的数据。SQLServer使用如下几种类型的页:yyyyy分配页面用于控制数据库中给表和索引分配的页面。用于存储数据库数据和事务日志数据。数据存储在每个页面的数据行中,数据和日志页面索引页面分发页面
    每一行的最大值为8060个字节。SQLServer不允许跨页面存储。用于存储数据库中的索引数据。用于存储数据库中有关索引的信息。用于存储大量的文本或者二进制的对象(BLOB),例如,图像。
    文本/图像页面
    在SQLServer数据页上,数据行紧接着标头按顺序放置。页的末尾是行偏移表,对于页中的每一行,每个行偏移表都包含一个条目。每个条目记录对应行的第一个字节与页首的距离。行偏移表中的条目的顺序与页中行的顺序相反,如图3.2所示。
    55
    Chapter03数据库和表
    第3章
    MicrosoftSQLServer数据页标头数据行1数据行2数据行3可用空间行偏移量
    图3.2
    SQLServer数据页
    在SQLServer2005中,行不能跨页,但是行的部分可以移出行所在的页,因此行实际可能非常大。页的单个行中的最大数据量和开销是8060字节(8KB)。但是,这不包括用Text/Image页类型存储的数据。在SQLServer2005中,包含varchar、nvarchar、varbinary或sql_variant列的表不受此限制的约束。当表中的所有固定列和可变列的行的总大小超过限制的8060字节时,SQLServer将从最大长度的列开始动态将一个或多个可变长度列移动到ROW_OVERFLOW_DATA分配单元中的页。每当插入或更新操作将行的总大小增大到超过限制的8060字节时,将会执行此操作。将列移动到ROW_OVERFLOW_DATA分配单元中的页后,将在IN_ROW_DATA分配单元中的原始页上维护24字节的指针。如果后续操作减小了行的大小,SQLServer会动态将列移回到原始数据页。2.区区(extent)是由8个连续的页面组成的数据结构,大小为8×8KB=64KB。当创建一个数据库对象时,SQLServer会自动以区为单位给它分配空间。每一个区只能包含一个数据库对象。区是表和索引分配空间的单位,如果在一个新建的数据库中创建一个表和两个索引,并且表中只包含一笔记录,则总共占用3×64KB=192KB的空间。示所有的SQLServer数据库都包含这些数据库结构,简单地说,一个数据库是由文件组成,文件是由区组成,区是由页面组成。为了使空间分配更有效,SQLServer有两种类型的区:yy统一区混合区由单个对象所有。区中的所有8页只能由所属对象使用。最多可由8个对象共享。区中8页的每页可由不同的对象所有。Server不会将所有区分配给包含少量数据的表。SQL提
    混合区和统一区如图3.3所示。
    56
    Chapter03数据库和表
    第3章
    图3.3
    混合区和统一区(table表示表,index表示索引)
    通常从混合区向新表或索引分配页。当表或索引增长到8页时,将变成使用统一区进行后续分配。如果对现有表创建索引,并且该表包含的行足以在索引中生成8页,则对该索引的所有分配都使用统一区进行。3.1.3事务日志
    每个SQLServer2005数据库都具有事务日志,用于记录所有事务以及每个事务对数据库所做的修改。事务日志是数据库的关键组件,如果系统出现故障,它就是近期数据的唯一源。在创建数据库的时候,事务日志也会随着被创建。事务日志存储在一个单独的文件上。在修改写入数据库之前,事务日志会自动记录对数据库对象所做的修改。这是SQL以有效地防止数据库的损坏,维护数据库的完整性。1.事务日志支持的操作事务日志支持以下操作:yy恢复个别的事务如果应用程序发出ROLLBACK语句,或者数据库引擎检测到错误(例如失去当运行SQLServer的服务器发生故障时,数据库Server的一个重要的容错特性,它可
    与客户端的通信),就使用日志记录回滚未完成的事务所做的修改。SQLServer启动时恢复所有未完成的事务可能处于这样的状态:还没有将某些修改从缓存写入数据文件,在数据文件内有未完成的事务所做的修改。当启动SQLServer实例时,它对每个数据库执行恢复操作。前滚日志中记录的、可能尚未写入数据文件的每个修改。在事务日志中找到的每个未完成的事务都将回滚,以确保数据库的完整性。y将还原的数据库、文件、文件组或页前滚到故障点在硬件丢失或磁盘故障影响到数据库文件后,可以将数据库还原到故障点。首先还原上一次的完整备份和差异备份,然后将事务日志备份后续序列还原到故障点。当还原每个日志备份时,数据库引擎重新应用日志中记录的所有修改,以回滚所有事务。当最后的日志备份还原后,数据库引擎将使用日志信息回滚到该点未完成的所有事务。y支持事务复制日志读取器代理程序监视已为事务复制配置的每个数据库的事务日志,并将已设复制标记的事务从事务日志复制到分发数据库中。y支持备用服务器解决方案备用服务器解决方案、数据库镜像和日志传送高度依赖于事务日志。在日志传送方案中,主服务器将主数据库的活动事务日志发送到
    57
    Chapter03数据库和表
    第3章
    一个或多个目标服务器。每个辅助服务器将该日志还原为其本地的辅助数据库。在数据库镜像方案中,数据库(主体数据库)的每次更新都在独立的、完整的数据库(镜像数据库)副本中立即重新生成。主体服务器实例立即将每个日志记录发送到镜像服务器实例,镜像服务器实例将传入的日志记录应用于镜像数据库,从而将其继续前滚。有关详细信息,请参阅数据库镜像概述。SQLServerDatabaseEngine的事务日志具有如下特征:y事务日志是作为数据库中的单独的文件或一组文件实现的。日志缓存与数据页缓存分开管理,从而使数据库引擎内的编码更简单、更快速和更可靠。y日志记录和页的格式不必遵守数据页的格式。展。这样可减少事务日志内空间不足的可能性,同时减少管理开销。y重用日志文件中空间的机制速度快且对事务吞吐量影响最小。y事务日志可以在几个文件上实现。通过设置日志的FILEGROWTH值可以将这些文件定义为自动扩
    2.事务日志提供容错的机制在SQLServer中,事务是指一次完成的操作的集合,虽然一个事务中可能包含了很多的SQL语句,但是在处理上,它们就像是一个操作一样。为了维护数据库的完整性,它们必须彻底完成或者根本不执行。如果一个事务只是部分执行,则数据库将受到损坏。SQLServer使用数据库的事务日志来防止没有完成的事务破坏数据。具体步骤如下:用户执行修改数据库对象的任务。当这个事务开始时,在事务日志中会记录一个事务开始标志,并将与此操作相关的数据读入缓冲区。在日志中记录每一个操作,然后在日志中记录一个提交事务的标志。每一个事务都会以这种方式记录在事务日志中,这些记录立即写到硬盘上。在缓冲区中修改响应的数据。这些数据一直在缓冲区中,直到检查点进程发生(定期发生),才会写到硬盘上。同时,也会在事务日志中写入“所有已经完成的事务已经作用于数据库”,即在事务日志中写入一个检查点标志。这个标志用于在数据库恢复过程中确定哪个事务已经作用于数据库了。如果服务器在已经完成了这个事务(这些事务的操作信息已经写入事务日志中)但还没有将缓冲区中的数据写入物理硬盘的情况下(检查点进程尚未触发)失效了或者在服务器恰好处理了部分事务的情况下数据库服务器失效了,那么在这两种情况下,数据库都不会被破坏。在服务器恢复正常后,SQLServer会开始一个恢复过程,检查数据库和事务日志,如果事务日志中的事务还没有在数据库中生效,则会在此时作用于数据库(前滚)如果发现部分事务还没有完成,则将这个事务在数据库中的作用;去掉(回滚)。这个过程是自动进行的。数据库完整性信息都由事务日志来完成,从而从本质上增强了SQLServer的容错性能。
    58
    Chapter03数据库和表
    第3章
    3.2
    查看数据库
    在建立一个实际的数据库之前,需要了解在SQLServer中怎样查看数据库的属性,包括表的结构和内容、关联图、视图、存储过程和用户角色等。3.2.1查看系统数据库实讲实训多媒体演示多媒体演示参见配套光盘中的\\视频\第3章\查看系统数据库.avi。
    master数据新安装SQLServer2005后,默认包含4个系统数据库:库、model数据库、msdb数据库和tempdb数据库。查看系统数据库的操作步骤如下:打开“开始”菜单,依次选择“程序”|MicrosoftSQLServer2005|SQLServerManagementStudio选项,打开“连接到服务器”对话框,进行相应设置后,单击“连接”按钮,连接到相应的服务器。据库”选项,即可看到4个系统数据库,如图3.4所示。
    在连接成功后弹出的“对象资源管理器”窗口中,依次打开“数据库”|“系统数
    系统数据库
    图3.4据库下面对这些系统数据库进行介绍。1.master数据库
    系统数
    master数据库记录了SQLServer系统的所有系统级别信息。它记录所有的登录账户和系统配置设置。它还记录所有其他的数据库,其中包括数据库文件的位置。master数据库记录SQLServer的初始化信息,始终有一个可用的最新master数据库备份。它因此,果如动。注意在SQLServer2005中,系统对象不再存储在master数据库中,而是存储在Resource数据库中。Resource数据库是只读数据库,它包含了SQLServer2005中的所有系统对象。SQLServer系统对象(例如sys.objects)在物理上持续存在于Resource数据库中,但在逻辑上,它们出现在每个数据库的sys架构中。master数据库不可用,则SQLServer无法启
    59
    Chapter03数据库和表
    第3章
    2.tempdb数据库tempdb数据库是连接到SQLServer实例的所有用户都可用的全局资源,保存所有的临时表和临时存储过程。它还满足任何其他的临时存储要求,例如,存储SQLServer生成的工作表。所有连接到系统的用户的临时表和存储过程都存储在该数据库中。该数据库在SQLServer每次启动时都重新创建,因此该数据库在系统启动时总是干净的。临时表和存储过程在连接断开时自动除去,而且当系统关闭后将没有任何连接处于活动状态,因此tempdb数据库中没有任何内容会从SQLServer的一个会话保存到另一个会话。意默认情况下,在SQLServer运行时,tempdb数据库会根据需要自动增长。不过,与其他数据库不同,每次启动数据库引擎时,它会重置为其初始大小。如果为tempdb数据库定义的大小较小,则每次重新启动SQLServer时,将tempdb数据库的大小自动增加到支持工作负荷所需的大小这一工作可能会成为系统处理负荷的一部分。为避免这种开销,可以使用ALTERDATABASE增加tempdb数据库的大小。ALTERDATABASE将在后面介绍。3.model数据库model数据库用作在系统上创建的所有数据库的模板。当创建数据库时,新数据库的第一部分通过复制model数据库中的内容创建,剩余部分由空页填充。由于SQLServer每次启动时都要创建tempdb数据库,model数据库必须一直存在于SQLServer系统中。如果修改model数据库,之后创建的所有数据库都将继承这些修改。4.msdb数据库msdb数据库供SQLServer代理程序调度警报和作业以及记录操作员时使用。3.2.2查看用户数据库注
    利用SQLServerManagementStudio可以查看数据库的内容,包括数据库的所有者、建立时间、大小、可用空间、表和索引等。下面以AdventureWorks数据库为例,来介绍数据库内容的查看。AdventureWorks数据库是SQLServer2005自带的示例数据库。在默认安装选项的情况下,SQLServer2005安装程序并不安装该示例数据库。要安装该示例数据库,在安装过程中,在“要安装的组件”页上选择“工作站组件、联机丛书和开发工具”,单击“高级”按钮,然后打开“联机丛书和示例”选项,选择“示例”选项,然后打开“数据库”,然后选择要安装的示例数据库即可。如果安装已经完成,可以通过“添加或删除程序”来安装AdventureWorks数据库。查看数据库的操作步骤如下:打开“开始”菜单,依次选择“程序”|MicrosoftSQLServer2005|SQLServerManagementStudio选项,打开“连接到服务器”对话框,进行相应设置后,单击“连接”按钮,连接到相应的服务器。实讲实训多媒体演示多媒体演示参见配套光盘中的\\视频\第3章\查看用户数据库.avi。
    60
    Chapter03数据库和表
    第3章
    在“对象资源管理器”窗口中,打开“数据库”选项,然后打开AdventureWorks数据库,即可看到AdventureWorks数据库及其包含的内容,如图3.5所示。
    AdventureWorks数据库及其包含的内容
    图3.5
    AdventureWorks数据库
    在AdventureWorks数据库上右击,选择快捷菜单中的“属性”选项,弹出“数据库属性AdventureWorks”对话框,如图3.6所示。
    数据库选项的分类
    图3.6yy数据库上次备份日期数据库日志上次备份日期
    “数据库属性-AdventureWorks”对话框显示数据库上次备份的日期。显示数据库事务日志上次备份的日期。
    在该对话框中,默认显示的是“常规”选项卡,各选项的含义如下:
    61
    Chapter03数据库和表
    第3章
    yyyyyyy
    名称所有者
    显示数据库的名称。显示数据库所有者的名称。可以在“文件”页上更改所有者。显示数据库的创建日期和时间。显示数据库中的可用空间(MB)。显示连接到该数据库的用户数。显示用于该数据库的排序规则。可以在“文件”页上更改排序规则。显示数据库的大小(MB)。
    创建日期大小用户数排序规则可用空间
    在“选择页”窗口中,单击“文件”选项,即可看到AdventureWorks数据库的数据库文件和日志文件的设置,如图3.7所示。
    单击该按钮可以设置数据库文件的自动增量设置单击该按钮可以将文件从数据库中删除
    单击该按钮可以将新文件添加到数据库中
    图3.7各选项的含义如下:yyyyy数据库名称所有者
    AdventureWorks数据库的数据库文件和日志文件
    添加或显示数据库的名称。
    通过从列表中进行选择来指定数据库的所有者。添加、查看、修改或删除相关联数据库的数据库文件。输入或修改文件的名称。从列表中选择文件类型。文件类型可以是“数据”或“日志”。
    y使用全文索引选中此选项将对数据库启用全文索引。取消此选项将对数据库禁用全文索引。数据库文件逻辑名称文件类型数据库文件具有以下属性:
    y文件组从列表中为文件选择文件组。默认情况下,文件组为PRIMARY。通过选择“<新文件组>”,然后在“新建文件组”对话框中输入有关文件组的信息,可以创建新的文件组。也可以在“文件组”页上创建新的文件组。y初始大小输入或修改文件的初始大小(MB)。此设置的默认值为“模型”数据
    62
    Chapter03数据库和表
    第3章
    库的初始大小值。y自动增长选择或显示文件的自动增长属性,这些属性控制文件在达到其最大文件大小时的扩展方式。若要编辑自动增长值,可单击所需文件的自动增长属性旁的编辑按钮,再更改“更改自动增长”对话框中的相应值。此设置的默认值为“模型”数据库的自动增长值。yy路径文件名提显示所选文件的路径。若要指定新文件的路径,可单击文件路径旁的编辑显示文件的名称。按钮,再导航到目标文件夹。
    示在从数据库中删除文件时,要求文件为空。否则无法删除文件。无法删除主数据文件和日志文件。要查看数据库中表的信息,可以单击AdventureWorks数据库中的“表”选项,在右侧窗口中即可看到数据库中表的信息,如图3.8所示。
    系统表,在数据库被新建立时就产生的
    3.2.3
    查看表之间的关系图
    图3.8信息
    数据库中表的实讲实训多媒体演示多媒体演示参见配套光盘中的\\视频\第3章\查看表关系.avi。
    关系图是用来记录数据库中表之间的相互关联情况的。在SQLServer中,一个数据库可以有多个关系图。要查看表之间的关系,首先要创建关系图,其操作步骤如下:在AdventureWorks数据库下面,右击“数据库关系图”选项,在弹出的快捷菜单中选择“新建数据库关系图”选项,打开“添加表”对话框。选择Employee、EmployeeAddress和EmployeeDepartmentHistory3个表,如图3.9所示。
    63
    Chapter03数据库和表
    第3章
    图3.9
    选择要查看关系图的表
    单击“添加”按钮,然后单击“关闭”按钮,即可看到代表3个表之间的关系图,如图3.10所示。
    图3.10
    3个表之间的关系图
    可以保存这个关系图,便于下次打开查看。单击工具栏上的“保存”按钮,打开“选择名称”对话框,在文本框中输入关系图的名称,如图3.11所示。
    图3.11
    “选择名称”对话框
    单击“确定”按钮,即可保存当前关系图。在“对象资源管理器”的“数据库关系图”下面,会显示该关系图。3.2.4查看表的结构和内容实讲实训多媒体演示多媒体演示参见配64套光盘中的
    Chapter03数据库和表
    第3章
    \\视频\第3章\查看表的结构和内容.avi。
    表是数据库中存放数据的地方,在SQLServerManagementStudio中,可以很方便地查看表的结构和表的内容。具体操作步骤如下:打开AdventureWorks数据库,选择“表”,进而在要查看的表上右击鼠标(这里查看表Employee的结构),选择“修改”命令,如图3.12所示。
    选择此项
    图3.12
    选择“修改”命令
    此时,会打开Employees表的结构窗口,如图3.13所示。字段的数据类型(字段长度)字段名称字段是否可以为空
    字段的其他属性设置
    图3.13
    Employee表的结构
    65
    提
    示新建一个表也是通过这个窗口来完成的,也可以在建立一个表后,通过此窗口来修
    66
    改表的结构。要查看表的内容,在图3.12所示的快捷菜单上,选择“打开表”命令,即可查看选项表的内容。Employee表的内容如图3.14所示。
    字段名称
    表的多笔记录
    图3.143.2.5查看视图
    Employee表的内容
    视图(Views)是一种虚拟表,它的所有数据均来自表,本身并不存储数据。视图的记录数据由某些表(一般是多个)的某些字段组成。视图的查看和表的查看类似,其具体步骤如下:在SQLServerManagementStudio窗口中,打开Adventure-Works数据库。选择“视图”选项,然后在右侧窗口中选择要查看的视图(这里查看vEmployeeDepartment视图),并右击鼠标。在弹出的快捷菜单中选择“修改”命令。此时,可打开视图的结构(设计)窗口,如图3.15所示。上面部分显示了视图所包含的表,表中每一个字段的前面有一个复选框,处于选中状态表示视图包含该字段。如果要查看视图内容,可在视图上右击鼠标,在打开的快捷菜单中选择“打开视图”选项,即可看到视图的内容,如图3.16所示。意由图3.16可看到,视图看起来和表一样,但是它的数据是来自所使用的表,本身并不存储数据。注实讲实训多媒体演示多媒体演示参见配套光盘中的\\视频\第3章\查看视图.avi。
    该视图包含4个表
    67
    处于选中状态表示视图包含该字段字段名称字段所在的表
    建立该视图的SQL语句
    图3.15构
    视图的结
    当前记录/总记录数图3.16内容视图的实讲实训多媒体演示多媒体演示参见配套光盘中的\\视频\第3章\查看存储过程.avi。
    3.2.6
    查看存储过程
    存储过程是预先使用SQL语言编写的,经过SQLServer编译后,存储在SQLServer中的程序,因此执行效率比较高,而且可以重复调用。下面仍以AdventureWorks数据库为例,介绍存储过程的查看。具体操作步骤如下:在SQLServerManagementStudio窗口中,打开Adventure-68
    Works数据库。“可编程性”|选择“
    存储过程”选项,即可看到Adventure-
    Works数据库所包含的存储过程,如图3.17所示。
    69
    图3.17
    AdventureWorks数据库包含的存储过程
    在左侧窗口中右击要查看的存储过程,例如uspGetEmployeeManagers存储过程,在打开的快捷菜单中,选择“修改”选项,即可打开该存储过程的SQL语句窗口,如图3.18所示。
    图3.18
    uspGetemployeeManagers存储过程的SQL语句窗口
    关闭SQL语句窗口,在存储过程上双击鼠标,即可看到存储过程的输入参数和返回值,如图3.19所示。在存储过程上右击鼠标,在打开的快捷菜单中选择“属性”命令,即可打开存储过程的属性窗口,如图3.20所示。在此窗口中显示了存储过程的创建日期和名称等信息。示系统内置了很多的存储过程以及扩充存储过程,可以使用这些存储过程来协助维护数据库,也可以使用自己创建的存储过程。存储过程的创建和使用将在第9章中详细介绍。提
    70
    图3.19
    存储过程的输入参数和返回值
    图3.203.2.7查看用户和角色
    存储过程的属性窗口
    用户(User)是对数据库有存取权限的使用者。角色(Roles)是指一组数据库用户的集合(和Windows中的用户组类似)。数据库中的角色可以根据需要添加。用户如果被加入到某一角色,则将具有该角色所拥有的权限。查看数据库的用户和角色的具体操作步骤如下:在SQLServerManagementStudio窗口中,打开Adventure-
    实讲实训多媒体演示多媒体演示参见配套光盘中的\\视频\第3章\查看用户和角色.avi。
    Works数据库。选择“安全性”|“用户”选项,即可看到数据库包含
    71
    的用户,如图3.21所示。
    图3.21
    AdventureWorks数据库的用户
    由图3.21可看到,AdventureWorks数据库目前有4个用户:guest、sys、dbo和INFORMATION_SCHEMA。其中dbo的登录名为sa。双击dbo用户,即可打开“数据库用户-dbo”对话框,如图3.22所示。上部显示了用户使用的用户名以及登录名,在下面的“此用户拥有的架构”列表框中,可以设置用户所拥有的架构;在下面的“数据库角色成员身份”列表框中,可以设置用户所属的角色。
    图3.22
    用户dbo的属性
    示在“数据库角色成员”列表框中,显示的是数据库中所包含的角色,每一角色前面有一复选框,如果选中,表示用户具有该角色所拥有的权限。另外,关于架构的内容,可以参考3.2.7节的内容。单击“确定”按钮,关闭“数据库用户-dbo”对话框。要查看数据库的角色,可
    提
    在左侧窗口中选择“角色”|“数据库角色”选项。右侧窗口中即可显示出AdventureWorks数据库所包含的数据库角色,如图3.23所示。
    默认的10个数据库角色
    图3.23
    数据库的角色
    双击要查看的数据库角色,例如db_owner,可显示角色的属性,如图3.24所示。
    图3.24提
    数据库角色的属性
    示应用程序角色是一个数据库主体,它使应用程序能够使用其自身及类似用户的特权来运行。使用应用程序角色,可以只允许通过特定应用程序连接的用户访问特定数据。与数据库角色不同的是,应用程序角色默认情况下不包含任何成员,而且是非活动的。因为应用程序角色是数据库级别的主体,以它们只能通过其他数据库中授予guest用户账户的所权限来访问这些数据库。因此,任何已禁用的guest用户账户的数据库对其他数据库中的应用程序角色都是不可访问的。
    3.2.8
    数据库架构架构是单个用户所拥有的数据库对象的集合,这些对象形成单个命名空间。命名空间是一组名称不
    重复的对象。例如,只有当两个表位于不同的架构中时才可以具有相同的名称。数据库对象(例如,表)由架构所拥有,而架构由数据库用户或角色所拥有。当架构所有者离开单位时,会在删除离开的用户之前将该架构的所有权移交给新的用户或角色。例如,假设用户userA拥有架构schemaA,而表Table1、Table2为架构schemeA所拥有。当用户userA离开单位时,则可以将schemaA的所有权移交给用于管理Table1和Table2表的新用户userB。当userB拥有schemaA后,同时也拥有了对Table1和Table2的所有权。1.查看数据库架构查看数据库架构的具体操作步骤如下:在SQLServerManagementStudio窗口中,打开Adventure实讲实训多媒体演示多媒体演示参见配套光盘中的\\视频\第3章\查看数据库架构.avi。
    Works数据库。“安全性”|选择“
    架构”选项,可看到AdventrueWorks即
    数据库所包含的架构,如图3.25所示。
    图3.25所示。
    AdventureWorks数据库所包含的架构
    在架构名称上双击,例如HumanResources,即可打开架构的属性窗口,如图3.26要设置架构的权限,可以在左侧窗口中单击“权限”选项,打开“权限设置”界面,如图3.27所示。可以通过单击“添加”按钮为架构添加用户或者角色来设置架构的所有者。当架构被新用户或者角色所拥有时,其所拥有的表等对象也将被新用户或角色所拥有。
    图3.26
    架构的属性窗口
    图3.272.SQLServer2005中的用户架构分离
    架构权限设置
    在SQLServer2000中,数据库用户和架构是隐式连接在一起的。每个数据库用户都是与该用户同名的架构的所有者。对象的所有者在功能上与包含它的架构所有者相同。因而,SQLServer2000中的完全限定名称的“架构”也是数据库中的用户。从SQLServer2000数据库中删除用户之前,管理员需要删除该因此,用户所拥有的所有对象或更改这些对象的所有
    者。以包含此对象的SQLServer2000数据库为例:accounting.ap.george.reconciliation此对象的所有者为用户“george”。如果管理员需要删除用户george,则必须先删除此对象或更改此对象的所有者。在后一种情况下,可以按如下方式将其重命名:accounting.ap.sandra.reconciliation转让对象的所有权也会更改其完全限定名称。引用accounting.ap.george.reconciliation的任何代码必须经过更新以反映对名称所做的更改。在SQLServer2005中,架构独立于创建它们的数据库用户而存在。可以在不更改架构名称的情况下转让架构的所有权。并且可以在架构中创建具有用户友好名称的对象,明确指示对象的功能。例如,除了accounting.ap.sandra.reconciliation外,还可以创建名为accounting.ap.invoice.reconciliation的架构。因为“invoice”不是用户,所以从数据库中删除用户后,无需更改此名称。这就简化了数据库管理员和开发人员的工作。将架构与数据库用户分离对管理员和开发人员而言有下列好处:yyyyyyy多个用户可以通过角色成员身份或Windows组成员身份拥有一个架构。这扩展了允许角色和组拥有对象的用户熟悉的功能。极大地简化了删除数据库用户的操作。删除数据库用户不需要重命名该用户架构所包含的对象。因而,在删除创建架构所含对象的用户后,不再需要修改和测试显式引用这些对象的应用程序。多个用户可以共享一个默认架构以进行统一名称解析。开发人员通过共享默认架构可以将共享对象存储在为特定应用程序专门创建的架构中,而不是DBO架构中。可以用比早期版本中的粒度更大的粒度管理架构和架构包含的对象的权限。完全限定的对象名称现在包含4个部分:server.database.schema和object。
    SQLServer2005还引入了“默认架构”的概念,用于解析未使用其完全限定名称引用的对象的名称。在SQLServer2000中,首先检查的是调用数据库用户所拥有的架构,然后是DBO拥有的架构。在SQLServer2005中,每个用户都有一个默认架构,用于指定服务器在解析对象的名称时将要搜索的第一个架构。3.3数据库的建立和删除在SQLServer中,建立数据库的方法不只一种,可以使用SQLServerManagementStudio直接建立,也可以使用SQL语言来创建数据库。关于SQL语言的使用则将在第5章介绍。3.3.1建立数据库
    直接建立数据库是在SQLServerManagementStudio窗口中进行的,大多数情况下,应该使用这种方式来创建一个数据库,因为图形化界面比Transact-SQL更容易使用。若要创建
    数据库,必须确定数据库的名称、所有者、大小以及存储该数据库的文件和文件组。在创建数据库之前,应注意下列事项:yyyy若要创建数据库,必须至少拥有CREATEDATABASE、CREATEANYDATA-BASE或ALTERANYDATABASE权限。在SQLServer2005中,对各个数据库的数据和日志文件设置了某些权限。如果这些文件位于具有打开权限的目录中,那么以上权限可以防止文件被意外篡改。创建数据库的用户将成为该数据库的所有者。对于一个SQLServer实例,最多可以创建32767个数据库。留其保留字的大写和小写形式。并且不允许嵌入空格或其他特殊字符。ymodel数据库中的所有用户定义对象都将复制到所有新创建的数据库中。可以向model数据库中添加任何对象(例如,表、视图、存储过程和数据类型),以便将这些对象包含到所有新创建的数据库中。创建新数据库的具体操作步骤如下:在SQLServerManagementStudio中,“数据库”选择文件夹,在上面右击鼠标,在弹出的快捷菜单上选择“新建数据库”命令。此时,会打开“新建数据库”窗口。在“数据库名称”文本框中输入新建数据库的名字,例如bookdb,如图3.28所示。在此输入新建数据库的名字,该名字必须符合SQLServer命名规范实讲实训多媒体演示多媒体演示参见配套光盘中的\\视频\第3章\新建数据库.avi。
    y数据库名称必须遵循为标识符指定的规则。标识符不能是Transact-SQL保留字。SQLServer保
    单击可以添加数据库文件
    图3.28
    “新建数据库”窗口
    在“数据库文件”栏中,可以设置文件的名称、位置及大小。数据库文件的逻辑名称默认与数据库名称相同,用户可以修改这个名字,而且,可以指定多个文件。在“路径”一栏中,可以通过单击按钮来指定文件所在的位置。在“初始大小”一栏中,以MB为单位输入数据库文件的大小。在“自动增长”一栏中,以选择文件是否自动增长和是否有最大限制。可单击bookdb对应的按钮,打开“更改bookdb的自动增长设置”对话框,如图3.29所示。如果选择了“启用自动增长”复选框,表示数据库的数据容量超过了初始大小时,数据文件可以自动增加。设置完成后,单击“确定”按钮。表示数据文件可以自动增长按照百分比增加按照字节数增加
    图3.29提
    “更改bookdb的自动增长设置”对话框
    示由于新建数据库是以model数据库为模板创建的,因此,其大小不可能低于2MB(这里假定model数据库的大小为2MB,如果model数据库数据文件的大小为其他数值,则不能低于该数值),并且必须以1M的整数倍来创建。另外,数据库大小虽然可以自动增长,但是增长后会造成数据库在磁盘中存放不连续,容易降低数据库的效率,因此建议先估算数据库所需容量,再一次给定适当的大小。在“选项页”栏中,选择“选项”选项,打开“新建数据库”的选项设置窗口,如图3.30所示。在“排序规则”下拉列表框中,可以选择要使用的排序规则。不过,大多数情况下,选择“(服务器默认值)”即可满足要求。在“恢复模式”列表框中,可以选择数据库发生损坏时的恢复模式。在“其他选项”栏中,可以设置其他数据库选项。同样,在“选项页”栏中,选择“文件组”选项,打开“文件组”设置窗口,可以对文件组进行设置。关于文件和文件组的设置,可以参考3.3.3节的内容。设置完成后,单击“确定”按钮,即可创建bookdb数据库,SQLServer不会返回任何提示信息。可以在“对象资源管理器”窗口的“数据库”文件夹下看到新创建的数据库。
    图3.303.3.2删除数据库
    “新建数据库”的选项设置窗口
    当不再需要数据库或者如果它被移到另一数据库或服务器时,即可删除该数据库。数据库删除之后,文件及其数据都从服务器上的磁盘中删除。一旦删除数据库,它即被永久删除,并且不能进行检索,除非使用以前的备份。删除数据库的操作步骤如下:打开SQLServerManagementStudio窗口,打开“数据库”文件夹。右击要删除的数据库,然后在弹出的快捷菜单中选择“删除”命令。将会弹出“删除对象”窗口。单击“确定”按钮,确认删除。删除数据库的同时,SQLServer会自动删除存储这个数据库的文件。意在数据库删除之后应该备份master数据库,因为删除数据库将更新master数据库中的系统表。如果master需要还原,则从上次备份master之后删除的所有数据库都将仍然在系统表中有引用,因而可能导致出现错误信息。3.3.3数据库文件和文件组设置注
    文件组允许对文件进行分组,以便于管理和数据的分配及放置。例如,可以分别在3个磁盘驱动器上创建3个文件(Data1.ndf、Data2.ndf和Data3.ndf),并将这3个文件指派到文件组fgroup1中。然后,可以明确地在文件组fgroup1上创建一个表。对表中数据的查询将分散到3个磁盘上,因而性能得以提高。在RAID(独立磁盘冗余阵列)条带集上创建单个文件也可以获得相同的性能改善。然而,文件和文件组使用户得以在新磁盘上轻易地添加新文件。另外,如果数据库超过单个MicrosoftWindows文件的最大大小,则可以使用次要
    数据文件允许数据库继续增长。“文件组”选项卡可以用来创建、删除文件组,并可以设置文件组是否为只读。创建文件组后,可以将文件放入到文件组中,这可以通过数据库的“文件”选项来完成。设置文件和文件组的操作步骤如下:打开SQLServerManagementStudio窗口,在“对象资源管理器”窗口中,打开“数据库”文件夹。右击要更改的数据库,这里以bookdb数据库为例,然后单击“属性”命令,打开“数据库属性”对话框。在“选项页”列表框中,单击“文件组”,打开“文件组”选项设置界面,如图3.31所示。然后输入添加的文件组名称。实讲实训多媒体演示多媒体演示参见配套光盘中的\\视频\第3章\设置文件和文件组.avi。
    显示了文件组中输入新的文件组名称,包含的文件数目这里输入FG02。将不允许修改的表(如历史数据)置于一些文件组上,然后将这些文件组标记为只读。这会防止意外的更新单击“添加”按钮。
    图3.31组
    创建文件
    在“选择页”列表框中,选择“文件”选项,打开“文件”选项设置界面。单击底部的“添加”按钮,在“逻辑名称”列中输入新的文件名称,这里输入bookdb01。然后在“文件组”列中单击下拉列表图标,即可选择刚创建的文件组,如图3.32所示。
    图3.32
    创建文件并选择文件组
    也可以在创建文件的时候,直接创建并设置文件组。单击“文件组”列旁边的下
    拉箭头,在下拉菜单中单击“<新文件组>”,即可打开“bookdb的新建文件组”对话框,如图3.33所示。
    选择该复选框,可以将文件组设置为默认的文件组
    图3.33组
    新建文件
    单击“确定”按钮,即可创建新的文件组,并将要创建的文件添加到该文件组中。3.3.4数据库大小估算和收缩数据库
    在设置数据库的大小时,应尽量精确估计数据库的大小。如果设置得过小,则设置数据库自动选项后,会造成数据存放得不连续,导致数据库性能下降。如果设置得过大,则会造成磁盘空间的浪费。下面是一个用来估算每个表所需页面数的估算公式:页数=表的行数/(8080/行的长度)式中,行的长度就是指表的每一笔记录所占的字节数。例如,某一个表包含两个字段:tt1(整型,16位)、tt2(字符型,长度为5个字节),则该表的行长度为:2+5=7。为了避免造成数据库中数据的丢失,在更改数据库属性时,要更改数据文件或者日志文件的大小,SQLServer只允许增大文件的大小,而不允许减小文件的大小。SQLServer2000允许收缩数据库中的每个文件以删除未使用的页。数据和事务日志文件都可以收缩。数据库文件可以作为组或单独地进行手工收缩。数据库也可设置为按给定的时间间隔自动收缩。该活动在后台进行,并且不影响数据库内的用户活动。收缩数据库的操作步骤如下:打开SQLServerManagementStudio窗口,在“对象资源管理器”窗口中,打开“数据库”文件夹。右击要收缩的数据库,依次选择“任务”|“收缩”|“数据库”命令,打开“收缩数据库”对话框,如图3.34所示。实讲实训多媒体演示多媒体演示参见配套光盘中的\\视频\第3章\收缩数据库.avi。
    收缩后数据库中剩余的可用空间量。以“数据库大小”栏中的“可用空间”值作为依据
    选择该选项可使释放的文件空间保留在数据库文件中,使包含数并据的页移到数据库文件的起始位置
    图3.34
    “收缩数据库”对话框
    设置好各种选项后,单击“确定”按钮,即可对选择的文件进行收缩。如果要收缩个别的数据库文件,可以在步骤文件”对话框,如图3.35所示。中选择“文件”命令,打开“收缩
    图3.35
    “收缩文件”对话框
    设置好各种选项后,单击“确定”按钮,即可对选择的文件进行收缩。注意不能将整个数据库收缩到比其原始大小还要小,也不能将数据库的大小收缩到小于model数据库的大小。因此,如果数据库创建时的大小为10MB,后来增长到100MB,则该数据库最小能够收缩到10MB(假定已经删除该数据库中所有数据)。
    3.4
    表的建立、删除与修改数据库建立后,接下来就该建立存储数据的表。本节主要介绍使用SQLServer
    ManagementStudio来建立表,并对表进行修改和删除。3.4.1新建表实讲实训多媒体演示多媒体演示参见配套光盘中的\\视频\第3章\新建表.avi。
    使用企业管理器建立一个表的过程是非常简单的,下面的操作是在bookdb数据库中建立一个book表。具体操作步骤如下:打开SQLServerManagementStudio窗口,打开“数据库”文件夹。在打开的bookdb文件夹中“表”选项上面右击鼠标,“新选择建表”命令,打开表设计窗口。在“列名”栏中依次输入表的字段名,并设置每个字段的数据类型和长度等属性。输入完成后的book表如图3.36所示。
    book表的各个字段
    单击可选择数据类型
    图3.36表
    创建
    一般说来,每个表都应该包含一个主键。例如,book表的主键应该为book_id字段。在book_id字段上右击鼠标,然后选择“设置主键”命令,即可将book_id字段设置为主键。此时,该字段前面会出现一个钥匙图标,如图3.37所示。钥匙图标表示该字段为主键
    图3.37键提
    设置主
    示如果要将多个字段设置为主键,可按住Ctrl键,单击每个字段前面的按钮来选择多个字段,然后再依照上述方法设置主键。
    表字段设置完成后,单击工具栏上的“保存”按钮输入book,如图3.38所示。单击“确定”按钮,即可创建book表。
    ,打开“选择名称”对话框,
    依照上述步骤,再创建3个表:orderform表、authors表和clients表。表的结构分别如图3.39、图3.40和图3.41所示。
    图3.38
    保存book表
    图3.39
    orderform表的结构
    图3.40提示
    authors表的结构
    图3.41
    clients表的结构
    这些表将在后面的讲解中作为例子使用。3.4.2修改表的结构实讲实训多媒体演示多媒体演示参见配套光盘中的\\视频\第3章\修改表的结构.avi。
    表结构的修改和查看的操作步骤是相同的,下面给book表中加入author字段。操作步骤如下:在SQLServerManagementStudio的右侧窗口中,在dbo.book表上右击鼠标,然后选择“修改”命令。在打开的表设计窗口中,右击book_name字段,然后选择“插入列”命令。在新插入的列中,输入author_id,设置数据类型为int,如图3.42所示。
    新插入的字段
    图3.42插入字段author提3.4.3示用户也可以修改已有的字段,包括名称和数据类型等。实讲实训多媒体演示多媒体演示参见配套光盘中的\\视频\第3章\建立表关联.avi。
    建立表间的关联下面建立上述4个表的关联,操作在SQLServerManagementStudio窗口中,打开bookdb数据
    步骤如下:
    库,选择“数据库关系图”选项,右击鼠标,在弹出的快捷菜单上选择“新建数据库关系图”命令,打开“添加表”对话框。如图3.43所示。按住Ctrl键,依次单击选择表,选择要添加的表。
    图3.43
    “添加表”对话框
    单击“添加”按钮,然后单击“关闭”按钮。在book表的author_id字段对应的按钮上按住鼠标左键,并拖曳到authors表上。此时两表之间会产生一条虚线,如图3.44所示。
    单击此处并拖动到authors表上
    图3.44
    拖动book表的author_id字段到authors表上
    松开鼠标,此时打开“表和列”对话框,如图3.45所示。在此对话框中,选择关联的主键的表名称和字段名称,以及关联的外键的表名称和字段名称。输入关系的名称。
    关联的主键的表名称和字段名称。
    关联的外键的表名称和字段名称。
    图3.45
    “表和列”对话框
    设置完成后,单击“确定”按钮。在“外键关系”对话框中,设置新建关系的属性,如图3.46所示。
    在插入和更新操作时,会同时修改相关联的数据
    在建立关联时,检查现有数据是否有问题复制数据时会复制相关联的数据图3.46“外键关系”对话框
    单击“确定”按钮,即可建立两个表间的关系,用一个链子式的连接表示。依照上面步骤,建立其他表间的关系,最终的关系图如图3.47所示。
    图3.47
    建立表间的关系
    单击工具栏上的“保存”按钮,打开“选择名称”对话框,输入关系图的名称,如图3.48所示。单击“确定”按钮,弹出一提示对话框,如图3.49所示。单击“是”按钮,即可保存建立的关系图。提示如果要删除表之间的关系,可以在表之间的链子式的链接上右击,在弹出的快捷菜单上,“从数据库中删除关系”选择命令,在打开的对话框中单击“是”按钮确认删除即可。
    图3.48
    保存关系图
    图3.493.4.4删除表
    提示对话框
    有时需要删除表(如要实现新的设计或释放数据库的空间时)。删除表时,表的结构定义、数据、全文索引、约束和索引都永久地从数据库中删除,原来存放表及其索引的存储空间可用来存放其他表。如果是单个的表,与其他表没有关联,则可以直接删除。操作步骤如下:在SQLServerManagementStudio窗口中,在“数据库”文件夹下,打开相应的数据库,然后选择“表”选项。右击要删除的表,然后在弹出的快捷菜单中选择“删除”命令。此时,会打开“删除对象”窗口,单击“确定”按钮即可删除选择的表。但是如果要删除的表与其他表存在关联,则在删除表时会出现错误。下面以bookdb数据库中的authors表为例,来介绍这种情况下删除表时的出错信息。操作步骤如下:在SQLServerManagementStudio中,在“数据库”文件夹下,打开bookdb数据库,选择“表”选项。在authors表上右击鼠标,然后在弹出的快捷菜单中选择“删除”命令。此时,打开“删除对象”窗口,单击“确定”按钮,系统提示删除表失败,如图3.50所示。出现这种错误的原因就是authors表与其他表间存在关联。如果该表被删除了,则原先关联到此表的表字段可能会找不到数据,所以SQLServer为了保持数据库中数据的完整性,不允许删除和其他表有关联的表。此时,可以通过查看表之间的依赖关系来确定出错的详细原因。单击“显示依赖关系”按钮,打开“authors依赖关系”对话框,如图3.51所示。在此对话框中,选择“依赖于‘authors’的对象”选项,则“依赖关系”列表框中会显示依赖于表authors的对象;如果选择“[authors]依赖的对象”选项,则“依赖关系”列表框中会显示表authors依赖的对象。
    系统提示消息:删除失败。单击可以查看详细的失败信息
    单击可显示与该表相关联的表及其字段图3.50“删除对象”窗口
    图3.51提
    “authors依赖关系”对话框
    示解决方法之一就是在企业管理器中,按住Ctrl键,然后选择要删除的表及其与之相关联的表,然后一并删除。如果一定要删除选择的表,而该表又与其他表相关联。则必须将关联先删除,然后才可以删除
    表。在bookdb文件夹下选择“数据库关系图”,然后双击建立的关系图。此时,会打开关系图窗口,在要删除的关系上右击鼠标,然后选择“从数据库中删除关系”命令。
    此时,authors表和book表间的关系会被删除。关闭关系图窗口,在出现的提示对话框中,单击“是”按钮,保存关系图。并在出现的对话框中,单击“确定”按钮即可。返回到SQLServerManagementStudio,依照删除单个表的方法删除表(这里并不删除表,只是介绍删除过程)。示在关系图窗口中,直接在要删除的表上右击鼠标,然后选择“从数据库中删除表”命令,在打开的提示对话框中,单击“是”按钮。关闭关系图窗口,选择“保存”命令,也可以删除表。3.4.5记录的新增和修改提
    记录一般是通过Transact-SQL来添加的,但是从SQLServer7.0开始,记录的添加和修改可以通过SQLServerManagementStudio来进行。但是需要注意的是,如果表之间有关联性存在,例如,表A的某个字段参考到表B时,则必须先输入表B的记录,然后才能输入表A与之相关的记录,否则将会出错。记录的新增和修改与记录的表内容的查看的操作过程是相同的,就是在打开表的内容窗口后,直接输入新的记录或者进行修改。3.5课堂演练
    3.5.1
    创建boarddb数据库
    创建一个用于公告信息系统的boarddb数据库。操作步骤如下:在SQLServerManagementStudio窗口中,打开“对象资源管理器”,选择“数据库”文件夹,在上面右击鼠标,在弹出的快捷菜单上选择“新建数据库”命令。此时,会打开“新建数据库”窗口。在“数据库名称”文本框中输入新建数据库的名字boarddb。在“数据库文件”栏中,设置文件的名称、位置及大小。在“初始大小”一栏中,输入5。其他保持默认设置,然后单击“确定”按钮,创建数据库。3.5.2创建boarddb数据库中的表
    在boarddb数据库中,创建users表和board表。操作步骤如下:打开SQLServerManagementStudio窗口,打开“数据库”文件夹。打开boarddb文件夹,在“表”选项上面右击鼠标,选择“新建表”命令,打开表设计窗口。在“列名”栏中依次输入users表的字段名,各字段名称、数据类型以及是否为空如表所示。
    表3.1字段名称userIDpasswordusernamesexaddressemail数据类型varchar(50)varchar(50)varchar(50)bitvarchar(50)varchar(100)
    users表的结构允许空否否是是是是说明用户名用户密码用户性别地址Email
    是电话telephonevarchar(50)输入完成后,单击“保存”按钮。在弹出的对话框中输入users。重复上面的步骤,创建board表,各字段名称、数据类型以及是否为空,如表3.2所示。表3.2board表的结构允许空否否是是是说明公告编号公告题目公告内容提交时间提交用户名
    字段名称board_idboard_titleboard_contentboard_timeboard_poster
    数据类型uniqueidentifiervarchar(100)varchar(50)datetimevarchar(50)
    3.6
    小结
    本章介绍了如何使用SQLServerManagementStudio来管理数据库和表,一般来说,数据库和表结构的建立和修改都是通过SQLServerManagementStudio来完成的。数据库的物理存储对象是页和区,这两个概念可以用来估算数据库所占用的空间,因此作为一个数据库管理员,了解这方面的知识还是很有必要的。创建一个数据库,仅仅是创建了一个空壳,它是以model数据库为模板创建的,因此其初始大小不会小于model数据库的大小。在创建数据库时,同时会创建事务日志。事务日志是在一个文件上预留的存储空间,在修改写入数据库之前,事务日志会自动记录对数据库对象所做的所有修改。表结构的设计和修改都比较简单,和其查看操作过程是类似的。表的删除操作也很简单,但是要注意的是,如果与其他表存在关联时,则不能直接删除表。要先删除关联,然后再删除表。
    3.73.7.1
    课后练习选择题和简答题
    (1)作为一个数据库管理员,要创建一个新的数据库,该数据库中只包含一个表,不包含其他任何数据库对象。该表中每一笔记录的长度为1024B,如果表中包含100000条记录,则应创建多大的数据库才能满足要求?A.120MBB.200MBC.50MBD.75MB
    (2)如果在创建新的数据库时,发现可以设置的最小容量为5MB,而不是通常情况下的1MB,最可能的原因是:A.master数据库的大小为5MBB.C.D.model数据库的大小为5MB(3)假定要创建一个大于25GB的数据库,不幸的是,服务器只有3个20GB的硬盘。这种情况下,应该怎么办?A.B.C.D.购买一个大于25GB的硬盘在空硬盘上创建多个数据文件,再创建一个存储在多个数据文件上的数据库在空硬盘上创建多个数据文件,再在每个数据文件上创建多个数据库,然后将这些较小的数据库连接为一个较大的数据库使用NTFS分区,然后进行压缩缺省数据文件的大小为5MB
    应该使用Transact-SQL而不是企业管理器来创建数据库
    (4)在检查SQLServer的设置情况时,突然发现某一数据库的大小为250MB,但是却只使用了20%的空间。假定该数据库容量不会再增大,则应该采取什么操作?A.B.C.D.为了节省空间,应该减小数据文件的大小为了节省空间,应该进行磁盘碎片整理为了节省空间,应该收缩数据库为了节省空间,应该使用NTFS分区,然后使用压缩功能进行压缩
    (5)数据库的存储结构分为哪两种?其含义分别是什么?(6)事务日志文件的作用是什么?(7)简单介绍删除与其他表存在关联的表的操作步骤。3.7.2操作题(1)在SQLServerManagementStudio创建一个名称为Resource的数据库。(2)创建一个名为Staff的表,包含staff_id、name、sex、age、degree等字段。(3)在Staff表中输入几条记录。
    
  • 上一篇资讯: sql_servlet
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师