SQL - Server - 2005教程

更新时间:2024-04-18 07:13:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

配置工具”| SQL Server Configuration Manager选项,打开SQL Server Configuration Manager窗口,如图2.23所示。

当前已经安装的SQL Server 服务

图 2.23 SQL Server Configuration Manager 窗口

2、在左侧窗口中,选择“SQL Server 2005服务” 选项,在右 侧窗口中即 可看到当前 已经安装的 SQL Server服务。在服务名称上右击,即可弹出一个快捷菜 单,如图2.24所示。通过其中的“启动”、“停止”、“暂 停”和“重新启动”等命令即可启动和停止相应的服 务。

图 2.24 启动和 停止服务

3、双击某个服务,即可打开该服务的“ SQL Server(MSSQLSERVER)属性”对话框,如图2.25所示。

默认打开的是“登录”选项卡,在该选项卡中,可以设置服务账户。也可以通过单击“服 务状态”下的按钮来启动或停止服务。

图 2.25 “SQL Server

(MSSQLSERVER)属

1

性”对话框

4、单击这些按钮可以启 动或者停止服务 5、 如果要设置服务的启动模式,则可以单击“服 务”标签,打开“服务”选项卡。选择“启动模式”选 项,然后单击右侧的下拉列表框,从出现的下拉列表中 可以选择服务的启动模式,如图2.26所示。

图 2.26 “服务”选项卡

6、设置完成后,单击“确定”按钮,系统提示重

新启动服务,单击“是”按钮即可。 2. 网络配置

通过SQL Server Configuration Manager配置工具,可以设置

SQL Server 2005的网络配置。操作步骤如下:

打开“开始”菜单,依次选择“程序”| Microsoft SQL Server

2005 |“配置工具”| SQL Server Configuration Manager选项,打开 SQL Server Configuration Manager窗口。

在左侧窗口中,通过双击依次打开

“SQL Server 2005网络配置”|“MSSQLS- ERVER的协议”选项,在右侧窗口中即可看 到SQL Server 2005支持的网络协议,如图2.27所示。

双击某个网络协议,即可打开该协

议的属性对话框,用户可以通过该对话框对 网络协议进行配置。例如,双击TCP/IP,即 可打开“TCP/IP属性”对话框,如图2.28所

图 2.27 SQL Server 2005 支持的网络协议

2

示。

通过该选项卡可以设置 IP地址和端口等信息

3. 客户端配置

如果要在客户端连接远程的SQL Server 2005服务器,则需要在 客户端计算机上安装并配置网络协议。操作步骤如下:

“开始”菜单,依次选择“程序”| Microsoft SQL Server 打开

实讲实训

多媒体演示 多媒体演示参见配 套光盘中的\\\\视频\\第 2章\\客户端配置.avi。

图 2.28 “TCP/IP 属性”对话框

| 配置工具”2005“| SQL Configuration Manager选项,打开SQL Server

Configuration Manager窗口。

,然后 在左侧窗口中,双击打开“SQL Native Client配置”

双击“客户端协议”。在右侧窗口中即可看到客户端已经配置的网络协议,如图2.29所示。

图 2.29 SQL Server Configuration

Manager 窗口

双击某个网络协议,即可打开该协议的属性对话框,用户可以通过该对话框对网 络协议进行配

置。

2.4.5 性能工具

SQL Server 2005提供了SQL Server Profiler和数据引擎优化顾问两个性能工具。下面分 别进行介绍。

3

1. SQL Server Profiler

Microsoft SQL Server Profiler是SQL跟踪的图形用户界面,用于监视SQL Server Data- base Engine或SQL Server Analysis Services的实例。可以捕获有关每个事件的数据并将其保 存到文件或表中供以后分析。例如,可以对生产环境进行监视,

了解哪些存储过程由于执行速度太慢影响了性能。 启动和使

用SQL Server Profiler的操作步骤如下:

打开“开始”菜单,依次选择“程序”| Microsoft SQL Server

2005 |“性能工具”| SQL Server Profiler选项,打开SQL Server Profiler窗口。

提 示

通过下面两种方式也可以打开SQL Server Profiler窗口:在SQL Server

Management Studio的“工具”菜单上,单击SQL Server Profiler;在数据库引擎优化顾 问的“工具”菜 单上,单击SQL Server Profiler。

在“文件”菜单上,选择“新建跟踪”选项,打开“连接到服务器”对话框,选 择要连接的服务器,并设置相应的登录模式。

单击“连接”按钮,打开“跟踪属性”对话框,如图2.30所示。在“常规”选项

卡中,可以设置“跟踪名称”、“使用模板”和“启用跟踪起止时间”等选项。

实讲实

训 多媒体演示 多媒体演示参见配套光 盘中的 \\\\ 视频 \\ 第 2 章

\\Profiler.avi。

图 2.30 “跟踪属性”对话

单击“事件选择”标签,打开“事件选择”选项卡,如图2.31所示。在该选项卡 中,可以设置

要跟踪的事件和事件列。

设置完成后,单击“运行”按钮即可开始跟踪。

4

2. 数据库引擎优化顾问

图 2.31 “事件选择”选项卡

借助Microsoft SQL Server 2005数据库引擎优化顾问,用户不必精通数据库结构或

Microsoft SQL Server的精髓,即可选择和创建索引、索引视图和分区的最佳集合。 数据库引擎优化顾问

分析一个或多个数据库的工作负荷和物理实现。工作负荷是对要

优化的一个或多个数据库执行的一组Transact-SQL语句。在优化数据库时,数据库引擎优化 顾问将使用跟踪文件、跟踪表或Transact-SQL脚本作为工作负荷输入。可以在SQL Server Management Studio中使用查询编辑器创建Transact-SQL脚本工作负荷。可以通过使用SQL Server Profiler中的优化模板来创建跟踪文件和跟踪表工作负荷。

启动和使用数据库引擎优化顾问的操作步骤如下:

打开“开始”菜单,依次选择“程序”| Microsoft SQL Server 2005 |“性能工具”|

“数据库引擎优化顾问”选项,打开“连接服务器”对话框。

选择要连接的服务器,并设置相应的登录模式。然后单击“连接”按钮,连接成

功后,弹出Database Engine Tuning Adviser窗口,如图2.32所示。

图 2.32 Database Engine Tuning

Adviser 窗口

5

在“常规”选项卡中,选择“工作负荷”中的“文件”或“表”选项,并设置“用

于工作负荷分析的数据库”。其中工作负荷由保存在文件或表中Transact-SQL脚本或SQL Server Profiler跟踪组成。

在“优化选项”选项卡中,可以设置用于优化的一些选项。设置完成后,单击工

具栏中的“开始分析”按钮,即可开始优化分析。

除了上面的启动数据库引擎优化顾问操作步骤外,还可以在SQL Server Management Studio窗口或者SQL Server Profiler窗口的“工具”菜单中,单击“数据库引擎优化顾问” 来启动数据库引擎优化顾问。

另外,也可 以在 SQL Server Management Studio 查询编辑器 中,直接选 择输入的 Transact-SQL语句,然后右击鼠标,在弹出的快捷菜单中,选择“在数据库引擎优化顾问中 分析查询”选项。此时将打开数据库引擎优化顾问图形用户界面,并将该脚本作为XML文 件工作负荷导入。可以指定会话名称和优化选项,以将选定的Transact-SQL查询作为工作负 荷进行优化。

提 示

可以使用命令行工具程序dta.exe来实现数据库引擎优化顾问的功能。

2.4.6 文档和教程

Microsoft SQL Server联机丛书是Microsoft SQL Server 2005的文档集。联机丛书涵盖了 有效使

用SQL Server所需的概念和过程。联机丛书还包括了使用SQL Server存储、检索、报 告和修改数据时所使用的语言和编程接口的参考资料。

打开和使用联机丛书的操作过程如下:

打开“开始”菜单,依次选择“所有程序”| Microsoft SQL Server 2005 |“文档和 教程”|

“SQL Server 联机丛书”选项,即可打开“联机丛书-Microsoft SQL Server 2005” 窗口,如图2.33所示。

图 2.33 “联机丛书-Microsoft SQL Server 2005”窗口

可以按照目录来查找需要的内容;也可以通过“搜索”选项卡来寻找需要的内容。

6

2.5

管理SQL Server服务器

服务器 是 SQL Server 数据库管 理系 统的核 心, 管理服 务器 可以通 过 SQL Server Management Studio管理平台来完成。

2.5.1 管理服务器组

在一个客户端上可以同时管理多个SQL Server服务器。可以将多 个SQL Server服务器分类汇总到不同的服务器组中,以方便管理。 创建和使

用服务器组的操作步骤如下:

打开“开始”菜单,依次选择“程序”| Microsoft SQL Server

2005 | SQL Server Management Studio 选项, 打开 SQL Server Management Studio窗口。 连接到服务器,然后在打开的“已注册的服务器”窗

实讲实训 多媒体演示 多媒体演示参见 配套光盘中的\\\\视 频 \\ 第 2 章 \\ 管理 服 务器组.avi。

,在快捷菜单中选择“新建”|“服务器组”命令,打开“新建服务器组”对话框, 如图2.34所示。 右击鼠标

器 组名称。 口中,

输入服务

器 组要放置的位置。

选择新服务

图 2.34 “新建服务器组”对话

组是SLQSERVER1。

设置完成后,单击“保存”按钮,即可创建一个服务器组,如图2.35所示。这里 创建的服务器

图 2.35 新创建的服务器

7

如果要将已注册的服务器移动到该服务器组中,则可右击服务器名称,在弹出的

快捷菜单上,选择“移到”选项,打开“移动服务器注册”对话框。选择服务器组名称, 如图2.36所示。

所示。

单击“确定”按钮,即可将服务器liuasus移到服务器组SQLSERVER1中,如图2.37

2.5.2 注册服务器

图 2.36 “移动服务器注册”对话框

图 2.37 将服务器移到服务器组中

在SQL Server Management Studio中注册服务器可以存储服务器连接信息,以供将来连 接时使用。

在注册服务器时必须指定:

y 服务器的类型,在Microsoft SQL Server 2005中,可以注册下列类型的服务器:数 据库引擎、

Analysis Services、Reporting Services、Integration Services和SQL Server Mobile。 y 服务器的名称。

y 登录到服务器时使用的身份验证的类型。 注册服务器的操作步骤如下:

打开“开始”菜单,依次选择“程序”| Microsoft SQL Server 2005

| SQL Server Management Studio选项,打开SQL Server Management Studio窗口。

在“已注册的服务器”窗口中,右击鼠标,在快捷菜单的“新

建”选项中,选择“服务器注册”选项,打开“新建服务器注册”对 话框,如图2.38所示。

实讲实训

多媒体演示 多媒体演示参见 配套光盘中的\\\\视 频 \\ 第 2 章 \\ 注册 服 务器.avi。

8

选择服务器 或 直接输入服 务器名。

选择身份验 证模式。

在“连接属性” 选项卡中,可 以设置 网络协 议 以 及 连接 到的数据库等选项。

图 2.38 “新建服务器注册”对话

设置完成后,单击“测试”按钮,测试到新建服务器的连接。如果配置成功,则 会打开“新建

服务器注册”对话框,提示连接测试成功,如图2.39所示。

图 2.39 提示连接测试成

测试成功后,单击“保存”按钮,保存新建的服务器注册。 如果要修改服务器注册,则可以右击 要修改的服务器实例,然后选择快捷菜单中 的“属性”选项,在打开的“编辑服务器注册属性”对话框中,用户可以修改服务器的身 份验证模式和服

务器名称等信息。

如果要删除服务器实例,则可以右击要删除的服务器实例,然后选择快捷菜单中

的“删除”选项,在弹出的确认删除对话框中单击“是”按钮,即可删除服务器实例。

2.6

课堂演练

在服务器上注册一个SQL Server服务器。操作步骤如下: 打开SQL

Server Management Studio。

9

在“已注册的服务器”窗口中,右击鼠标,在快捷菜单的“新建”选项中,选择

“服务器注册”选项,打开“新建服务器注册”对话框。设置服务器名称和身份验证模式。

单击“测试”按钮,测试到新建服务器的连接。如果配置成功,则会打开“新建

服务器注册”对话框,提示连接测试成功。

测试成功后,单击“保存”按钮,保存新建的服务器注册。

2.7

本章介绍了安装SQL Server 2005的安装选项及具体安装步骤,并对SQL Server 2005的 组件功能、SQL Server Management Studio管理平台、性能工具、配置工具、Analysis Services 和服务器的管理等进行了介绍。

在SQL Server 2005中的安装中,关键是要理解各个选项的设置,主要包括服务账户和 验证模式等设置。

SQL Server 2005是一个功能很强的数据库管理系统,它包含了几个用于数据库以及安 全性配置的工具。在本章中,对这些管理工具和服务器的管理进行了简要介绍,使读者在 使用SQL Server 2005以前有一个全面的认识。

2.8

课后练习 小结

2.8.1 简答题

(1)简述服务账户的概念。

(2)简述SQL Server 2005的组件及其功能。 (3)SQL Server Management Studio的功能有哪些? 2.8.2 操作题

(1)安装SQL Server 2005,了解安装步骤和注意事项。 (2)试着使用SQL Server 2005的工具和教程。

10

本章导读: 第 3 章 03 数据库和表 ?? 数据库文件 Chapter 页和区的概念 ???? 事务日志 ?? 查看数据库属性 ?? 数据库的建立 ?? 数据库的删除 ?? 表的建立 ?? 表的删除 3.1

数据库存储结构

数据库的存储结构分为逻辑存储结构和物理存储结构。数据库的逻辑存储结构指的是 数据库的性质信息等。SQL Server数据库是由表、视图和索引等各种不同的数据库对象所 组成,它们分别存储数据库的特定信息,构成了数据库的逻辑存储结构。数据库的物理存 储结构则指的是磁盘上存储的数据库文件。

数据库文件由数据库文件和事务日志文件组成,保存在物理介质的NTFS分区或者FAT 分区上,它预先分配了将要被数据库和事务日志所使用的物理存储空间。

3.1.1 数据库文件和文件组

SQL Server 2005将数据库映射为一组操作系统文件。数据和日志信息从不混合在相同 的文件中,而且各文件仅在一个数据库中使用。文件组是命名的文件集合,用于帮助数据 布局和管理任务,例如备份和还原操作。

SQL Server 2005数据库具有3种类型的文件:

y 主数据文件 主数据文件是数据库的起点,指向数据库中的其他文件。每个数据 库都有一个主数

据文件。主数据文件的推荐文件扩展名是.mdf。

y 次要数据文件 除主数据文件以外的所有其他数据文件都是次要数据文件。某些 数据库可能不含

有任何次要数据文件,而有些数据库则含有多个次要数据文件。 次要数据文件的推荐文件扩展名是.ndf。

y 日志文件 日志文件包含着用于恢复数据库的所有日志信息。每个数据库必须至 少有一个日志文

件,当然也可以有多个。日志文件的推荐文件扩展名是 .ldf。

Chapter 03 数据库和表

第3章

在SQL Server 2005中,数据库中所有文件的位置都记录在数据库的主文件和master数 据库中。大多

注 意

SQL Server 2005不强制使用.mdf、.ndf和.ldf 文件扩展名,但使用它们有助于标识文 件的各种类型和用途。

数情况下,数据库引擎使用master数据库中的文件位置信息。但是,在以下 情况中,数据库引擎使用主文件中的文件位置信息来初始化master数据库中的文件位置项:

y 使 用 带 有 FOR ATTACH 或 FOR ATTACH_REBUILD_LOG 选 项 的 CREATE DATABASE语句

来附加数据库时。关于CREATE DATABASE语句的详细使用,可 以参看附录B。 y 从SQL Server 2000版或7.0版升级到SQL Server 2005时。

y 还原master数据库时。

为便于数据库文件的分配和管理,可以将数据库对象和文件一起分成文件组。有两种 类型的文件

组:

y 主文件组 主文件组包含主数据文件和任何没有明确分配给其他文件组的其他文 件。系统表的所

有页均分配在主文件组中。

y 用户定 义文 件组 用 户 定义文 件组 是通过 在 CREATE DATABASE 或 ALTER DATABASE

语句中使用FILEGROUP关键字指定的任何文件组。

一个文件不可以是多个文件组的成员。表、索引和大型对象数据可以与指定的文件组 相关联。在这种情况下,它们的所有页将被分配到该文件组,或者对表和索引进行分区。 已分区表和索引的数据被分割为单元,每个单元可以放置在数据库中的单独文件组中。

每个数据库中均有一个文件组被指定为默认文件组。如果创建表或索引时未指定文件 组,则将假定所有页都从默认文件组分配。一次只能有一个文件组作为默认文件组。

注 意 日志文件不包括在文件组内。日志空间与数据空间分开管理。

可以指定一个特定的增量。每次填充文件时,其大小均按此增量来增长。如 果文件组中有多个文件,则它们在所有文件被填满之前不会自动增长。填满后,这些文件 会循环增长。

每个文件还可以指定一个最大大小。如果没有指定最大大小,文件可以一直增长到用 完磁盘上的所有可用空间。如果SQL Server作为数据库嵌入某应用程序,而该应用程序的 用户无法迅速与系统管理员联系,则此功能就特别有用。用户可以使文件根据需要自动增 长,以减轻监视数据库中的可用空间和手动分配额外空间的管理负担。

3.1.2 页和区

在创建数据库对象时,SQL Server会使用一些特定的数据结构给数据对象分配空间, 即页和区。它们和数据库及其文件间的关系如图3.1所示。

SQL Server 2005文件可以从它们最初指定的大小开始,随数据的增加而自动增长。在 定义文件时,

54

数据文件.mdf 或者.ndf 数据库 Chapter 03 数据库和表

第3章

表、索引 日志文件.ldf 区(8个连续页面)

数据页(8KB)

最大行长度为8080字节

图 3.1 数据库的存储

结构

1. 页

SQL Server中数据存储的基本单位是页(page)。为数据库中的数据文件(.mdf或.ndf) 分配的磁盘空间可以从逻辑上划分成页(从0到n连续编号)。磁盘I/O操作在页级执行。也 就是说,SQL Server读取或写入所有数据页。

SQL Server中的所有信息都存储在页上,页是数据库中使用的最小数据单元。每一个 页存储8KB(8192字节)的信息,所有的页都包含一个132字节的页面头,这样就留下8060 字节存储数据。页头被SQL Server用来唯一地标识存储在页中的数据。

SQL Server使用如下几种类型的页: y 分配页面

用于控制数据库中给表和索引分配的页面。

用于存储数据库数据和事务日志数据。数据存储在每个页面的 数据行中,

y 数据和日志页面 y 索引页面 y 分发页面

每一行的最大值为8060个字节。SQL Server不允许跨页面存储。

用于存储数据库中的索引数据。 用于存储数据库中有关索引的信息。

用于存储大量的文本或者二进制的对象(BLOB),例如,图像。

y 文本/图像页面

在SQL Server数据页上,数据行紧接着标头按顺序放置。页的末尾是行偏移表,对于 页中的每一行,每个行偏移表都包含一个条目。每个条目记录对应行的第一个字节与页首 的距离。行偏移表中的条目的顺序与页中行的顺序相反,如图3.2所示。

55

Microsoft SQL Server数据页

标头 数据行1 数据行2

数据行3 可用空间

Chapter 03 数据库和表

第3章

行偏移量

图 3.2 SQL Server 数

据页

在SQL Server 2005中,行不能跨页,但是行的部分可以移出行所在的页,因此行实际 可能非常大。页的单个行中的最大数据量和开销是8 060字节(8 KB)。但是,这不包括用 Text/Image页类型存储的数据。在SQL Server 2005中,包含varchar、nvarchar、varbinary或 sql_variant列的表不受此限制的约束。当表中的所有固定列和可变列的行的总大小超过限制 的8 060字节时,SQL Server将从最大长度的列开始动态将一个或多个可变长度列移动到 ROW_OVERFLOW_DATA分配单元中的页。每当插入或更新操作将行的总大小增大到超 过限制的8 060字节时,将会执行此操作。将列移动到ROW_OVERFLOW_DATA分配单元 中的页后,将在IN_ROW_DATA分配单元中的原始页上维护24字节的指针。如果后续操作 减小了行的大小,SQL Server会动态将列移回到原始数据页。

2. 区

区(extent)是由8个连续的页面组成的数据结构,大小为8×8KB=64KB。当创建一 个数据库对象时,SQL Server会自动以区为单位给它分配空间。每一个区只能包含一个数 据库对象。

区是表和索引分配空间的单位,如果在一个新建的数据库中创建一个表和两个索引, 并且表中只包含一笔记录,则总共占用3×64KB=192KB的空间。

提 示

所有的SQL Server数据库都包含这些数据库结构,简单地说,一个数据库是由文件组

成,文件是由区组成,区是由页面组成。

为了使空间分配更有效,SQL Server不会将所有区分配给包含少量数据的表。SQL y 统一区 y 混合区

由单个对象所有。区中的所有8页只能由所属对象使用。 最多可由8个对象共享。区中8页的每页可由不同的对象所有。

Server有两种类型的区:

混合区和统一区如图3.3所示。

56

Chapter 03 数据库和表

第3章

图 3.3 混合区和统一区(table 表示表,index 表示索引)

通常从混合区向新表或索引分配页。当表或索引增长到 8 页时,将变成使用统一区进 行后续分配。如果对现有表创建索引,并且该表包含的行足以在索引中生成 8 页,则对该 索引的所有分配都使用统一区进行。

3.1.3 事务日志

每个SQL Server 2005数据库都具有事务日志,用于记录所有事务以及每个事务对数据 库所做的修改。事务日志是数据库的关键组件,如果系统出现故障,它就是近期数据的唯 一源。

在创建数据库的时候,事务日志也会随着被创建。事务日志存储在一个单独的文件上。 在修改写入数据库之前,事务日志会自动记录对数据库对象所做的修改。这是SQL Server 的一个重要的容错特性,它可以有效地防止数据库的损坏,维护数据库的完整性。

1. 事务日志支持的操作 事务日志支持以下操作: y 恢复个别的事务

如果应用程序发出ROLLBACK语句,或者数据库引擎检测到错 误(例如失去

与客户端的通信),就使用日志记录回滚未完成的事务所做的修改。

y SQL Server启动时恢复所有未完成的事务 当运行SQL Server的服务器发生故障 时,数据库

可能处于这样的状态:还没有将某些修改从缓存写入数据文件,在数 据文件内有未完成的事务所做的修改。当启动SQL Server实例时,它对每个数据库 执行恢复操作。前滚日志中记录的、可能尚未写入数据文件的每个修改。在事务 日志中找到的每个未完成的事务都将回滚,以确保数据库的完整性。

y 将还原的数据库、文件、文件组或页前滚到故障点

在硬件丢失或磁盘故障影响

到数据库文件后,可以将数据库还原到故障点。首先还原上一次的完整备份和差 异备份,然后将事务日志备份后续序列还原到故障点。当还原每个日志备份时, 数据库引擎 重新应用日志中记录的所有修改,以回滚所有事务。当最后的日志备 份还原后,数据库引擎将使用日志信息回滚到该点未完成的所有事务。 y 支持事务复制

日志读取器代理程序监视已为事务复制配置的每个数据库的事务

日志,并将已设复制标记的事务从事务日志复制到分发数据库中。

y 支持备用服务器解决方案 备用服务器解决方案、数据库镜像和日志传送高度依 赖于事务日志。

在日志传送方案中,主服务器将主数据库的活动事务日志发送到

57

Chapter 03 数据库和表

第3章

一个或多个目标服务器。每个辅助服务器将该日志还原为其本地的辅助数据库。

在数据库镜像方案中,数据库(主体数据库)的每次更新都在独立的、完整的数 据库(镜像数据库)副本中立即重新生成。主体服务器实例立即将每个日志记录 发送到镜像服务器实例,镜像服务器实例将传入的日志记录应用于镜像数据库, 从而将其继续前滚。有关详细信息,请参阅数据库镜像概述。

SQL Server Database Engine的事务日志具有如下特征:

y 事务日志是作为数据库中的单独的文件或一组文件实现的。日志缓存与数据页缓 存分开管理,从

而使数据库引擎内的编码更简单、更快速和更可靠。 y 日志记录和页的格式不必遵守数据页的格式。

y 事务日志可以在几个文件上实现。通过设置日志的FILEGROWTH值可以将这些文 件定义为自动扩

展。这样可减少事务日志内空间不足的可能性,同时减少管理开 销。

在SQL Server中,事务是指一次完成的操作的集合,虽然一个事务中可能包含了很多 的SQL语句,但是在处理上,它们就像是一个操作一样。为了维护数据库的完整性,它们 必须彻底完成或者根本不执行。如果一个事务只是部分执行,则数据库将受到损坏。

SQL Server使用数据库的事务日志来防止没有完成的事务破坏数据。具体步骤如下: y 重用日志文件中空间的机制速度快且对事务吞吐量影响最小。 2. 事务日志提供容错的机制

用户执行修改数据库对象的任务。 当这个事务开始时,在事务日志中会记录一个事务开始标志, 并将与此操作相关 的数据读入缓冲区。

在日志中记录每一个操作,然后在日志中记录一个提交事务的标志。每一个事务

都会以这种方式记录在事务日志中,这些记录立即写到硬盘上。

在缓冲区中修改响应的数据。这些数据一直在缓冲区中,直到检查点进程发生(定

期发生),才会写到硬盘上。同时,也会在事务日志中写入“所有已经完成的事务已经作 用于数据库”,即在事务日志中写入一个检查点标志。这个标志用于在数据库恢复过程中 确定哪个事务已经作用于数据库了。

如果服务器在已经完成了这个事务(这些事务的操作信息已经写入事务日志中)

但还没有将缓冲区中的数据写入物理硬盘的情况下(检查点进程尚未触发)失效了或者在 服务器恰好处理了部分事务的情况下数据库服务器失效了,那么在这两种情况下,数据库 都不会被破坏。在服务器恢复正常后,SQL Server会开始一个恢复过程,检查数据库和事 务日志,如果事务日志中的事务还没有在数据库中生效,则会在此时作用于数据库(前滚); 如果发现部分事务还没有完成,则将这个事务在数据库中的作用去掉(回滚)。这个过程是 自动进行的。数据库完整性信息都由事务日志来完成,从而从本质上增强了SQL Server的 容错性能。

58

3.2

查看数据库

Chapter 03 数据库和表

第3章

在建立一个实际的数据库之前,需要了解在SQL Server中怎样查看数据库的属性,包 括表的结构和内容、关联图、视图、存储过程和用户角色等。

3.2.1 查看系统数据库

master数据 新安装SQL Server 2005后,默认包含4个系统数据库:库、model数据库、msdb数据库和tempdb数据库。 查看系

统数据库的操作步骤如下:

打开“开始”菜单,依次选择“程序”| Microsoft SQL Server

2005 | SQL Server Management Studio选项,打开“连接到服务器”对 话框,进行相应设置后,单击“连接”按钮,连接到相应的服务器。 据库”选项,即可看到4个系统数据库,如图3.4所示。

实讲实训

多媒体演示 多媒体演示参见 配套光盘中的\\\\视 频 \\ 第 3 章 \\ 查看 系 统数据库.avi。

在连接成功后弹出的“对象资源管理器”窗口中,依次打开“数据库”|“系统数

系统数据库

下面对这些系统数据库进行介绍。

图 3.4 系统数

据库

1. master 数据库

master数据库记录了SQL Server系统的所有系统级别信息。它记录所有的登录账户和系 统配置设置。它还记录所有其他的数据库,其中包括数据库文件的位置。master数据库记 录SQL Server的初始化信息,它始终有一个可用的最新master数据库备份。因此,如果 master 数据库不可用,则SQL Server无法启动。

注 意 在SQL Server 2005 中,系统对象不再存储在master数据库中,而是存储在Resource

数据库中。Resource 数据库是只读数据库,它包含了SQL Server 2005中的所有系统对 象。 SQL Server系统对象(例如sys.objects)在物理上持续存在于Resource数据库中,但在逻辑 上,它们出现在每个数据库的sys架构中。

59

2. tempdb 数据库

Chapter 03 数据库和表

第3章

tempdb数据库是连接到SQL Server实例的所有用户都可用的全局资源,保存所有的临 时表和临时存储过程。它还满足任何其他的临时存储要求,例如,存储SQL Server生成的 工作表。所有连接到系统的用户的临时表和存储过程都存储在该数据库中。该数据库在 SQL Server 每次启动时都重新创建,因此该数据库在系统启动时总是干净的。临时表和存 储过程在连接断开时自动除去,而且当系统关闭后将没有任何连接处于活动状态,因此 tempdb数据库中没有任何内容会从SQL Server的一个会话保存到另一个会话。

注 意 默认情况下,在SQL Server运行时,tempdb数据库会根据需要自动增长。不过,与其 他

数据库不同,每次启动数据库引擎时,它会重置为其初始大小。如果为tempdb 数据库 定义 的大小较小,则每次重新启动 SQL Server时,将tempdb数据库的大小自动增加到支 持工作负荷所需的大小这一工作可能会成为系统处理负荷的一部分。为避免这种开销,可 以使用ALTER DATABASE增加tempdb数据库的大小。ALTER DATABASE将在后面介绍。 3. model 数据库

model数据库用作在系统上创建的所有数据库的模板。当创建数据库时,新数据库的第 一部分通过复制model数据库中的内容创建,剩余部分由空页填充。由于SQL Server每次启 动时都要创建tempdb数据库,model数据库必须一直存在于SQL Server系统中。

如果修改 model 数据库,之后创建的所有数据库都将继承这些修改。 4. msdb 数据库

msdb数据库供SQL Server代理程序调度警报和作业以及记录操作员时使用。

3.2.2 查看用户数据库

利用SQL Server Management Studio可以查看数据库的内容,包括数据库的所有者、建 立时间、大小、可用空间、表和索引等。

下面以AdventureWorks数据库为例,来介绍数据库内容的查看。AdventureWorks数据库 是SQL Server 2005自带的示例数据库。

在默认安装选项的情况下,SQL Server 2005安装程序并不安装该示例数据库。要安装 该示例数据库,在安装过程中,在“要安装的组件”页上选择“工作站组件、联机丛书和 开发工具”,单击“高级”按钮,然后打开“联机丛书和示例”选项,选择“示例”选项, 然后打开“数据库”,然后选择要安装的示例数据库即可。如果安装

已经完成,可以通过“添加或删除程序”来安装AdventureWorks数据 库。

查看数据库的操作步骤如下:

打开“开始”菜单,依次选择“程序”| Microsoft SQL Server

2005 | SQL Server Management Studio选项,打开“连接到服务器”对 话框,进行相应设置后,单击“连接”按钮,连接到相应的服务器。

实讲实训

多媒体演示 多媒体演示参见 配套光盘中的\\\\视 频 \\ 第 3 章 \\ 查看 用 户数据库.avi。

60

Chapter 03 数据库和表

第3章

在“对象资源管理器”窗口中,打开“数据库”选项,然后打开AdventureWorks

数据库,即可看到AdventureWorks数据库及其包含的内容,如图3.5所示。

AdventureWorks 数 据 库及其包含的内容

图 3.5 AdventureWorks 数

据库

在AdventureWorks数据库上右击,选择快捷菜单中的“属性”选项,弹出“数据 库属性-AdventureWorks”对话框,如图3.6所示。

数据库选项的分类

图 3.6 “数据库属性-AdventureWorks”对话框

在该对话框中,默认显示的是“常规”选项卡,各选项的含义如下: y 数据库上次备份日期 y 数据库日志上次备份日期

显示数据库上次备份的日期。

显示数据库事务日志上次备份的日期。

61

y 名称 y 所有者 y 创建日期 y 大小 y 用户数 y 排序规则 y 可用空间

显示数据库的名称。

Chapter 03

数据库和表

第3章

显示数据库所有者的名称。可以在“文件”页上更改所有者。 显示数据库的创建日期和时间。 显示数据库中的可用空间(MB)。 显示连接到该数据库的用户数。

显示用于该数据库的排序规则。可以在“文件”页上更改排序规则。 显示数据库的大小(MB)。

在“选择页”窗口中,单击“文件”选项,即可看到AdventureWorks数据库的数

据库文件和日志文件的设置,如图3.7所示。

单击该按钮可以设置数据 库文件的自动增量设置

单击该按钮可 以将文件从数

据库中删除

单击该按钮可以将新文 件添加到数据库中

图 3.7 AdventureWorks 数据库的数据库文件和日志

文件

各选项的含义如下: y 数据库名称 y 所有者

添加或显示数据库的名称。

通过从列表中进行选择来指定数据库的所有者。

添加、查看、修改或删除相关联数据库的数据库文件。 输入或修改文件的名称。

y 使用全文索引 选中此选项将对数据库启用全文索引。取消此选项将对数据库禁 用全文索引。 y 数据库文件 y 逻辑名称 y 文件类型

数据库文件具有以下属性:

从列表中选择文件类型。文件类型可以是“数据”或“日志”。

y 文件组 从列表中为文件选择文件组。默认情况下,文件组为PRIMARY。通过选 择“<新文件组>”,

然后在“新建文件组”对话框中输入有关文件组的信息,可 以创建新的文件组。也可以在“文件组”页上创建新的文件组。 y 初始大小

输入或修改文件的初始大小(MB)。此设置的默认值为“模型”数据

62

库的初始大小值。

Chapter 03 数据库和表

第3章

y 自动增长 选择或显示文件的自动增长属性,这些属性控制文件在达到其最大文 件大小时的扩展

方式。若要编辑自动增长值,可单击所需文件的自动增长属性旁 的编辑按钮,再更改“更改自动增长”对话框中的相应值。此设置的默认值为“模 型”数据库的自动增长值。 y 路径 y 文件名

提 示

在从数据库中删除文件时,要求文件为空。否则无法删除文件。无法删除主数据文

件和日志文件。

显示所选文件的路径。若要指定新文件的路径,可单击文件路径旁的编辑 显示文件的名称。

按钮,再导航到目标文件夹。

要查看数据库中表的信息,可以单击AdventureWorks数据库中的“表”选项,在 右侧窗口中即

可看到数据库中表的信息,如图3.8所示。

系统表,在数据 库被新建立

就产生的

3.2.3 查看表之间的关系图

图 3.8 数据库中表的信息

实讲实训 多 媒体演示 多 媒体演示参见 配套光盘中的\\\\视 频 \\ 第 3 章 \\ 查看 表 关系.avi。 关系图是用来记录数据库中表之间的相互关联情况的。在SQL Server中,一个数据库可以有多个关系图。要查看表之间的关系,首 先要创建关系图,其操作步骤如下:

在AdventureWorks数据库下面,右击“数据库关系图”选项, 在弹出的

快捷菜单中选择“新建数据库关系图”选项,打开“添加表” 对 话 框 。 选 择 Employee 、 EmployeeAddress 和 EmployeeDepartmentHistory 3个表,如图3.9所示。

63

Chapter 03 数据库和表

第3章

图 3.9 选择要查看关系图

的表

单击“添加”按钮,然后单击“关闭”按钮,即可看到代表3个表之间的关系图, 如图3.10所

示。

图 3.10 3 个表之间的关

系图

可以保存这个关系图,便于下次打开查看。单击工具栏上的“保存”按钮,打开 “选择名称”

对话框,在文本框中输入关系图的名称,如图3.11所示。

图 3.11 “选择名称”对话

单击“确定”按钮,即可保存当前关系图。在“对象资源管理器”的“数据库关 系图”下面,

会显示该关系图。

3.2.4 查看表的结构和内容

实讲实训 多媒体演示 多媒体演示参见配

64 套光盘中的

Chapter 03 数据库和表

第3章

\\\\视频\\ 第3章\\查看表的结 构和内容.avi。

表是数据库中存放数据的地方,在SQL Server Management Studio中,可以很方便地查

看表的结构和表的内容。具体操作步骤如下:

打开AdventureWorks数据库,选择“表”,进而在要查看的表上右击鼠标(这里 查看表

图 3.12 选择“修改”命

此时,会打开Employees表的结构窗口,如图3.13所示。

字段的数据类型(字段长

度)

字段名称

字段是否可以为空

Employee的结构),选择“修改”命令,如图3.12所示。

选择此项

字段的其他属 性设置

图 3.13 Employee 表的

结构

65

提 示

新建一个表也是通过这个窗口来完成的,也可以在建立一个表后,通过此窗口来修

66

改表的结构。

要查看表的内容,在图3.12所示的快捷菜单上,选择“打开表”命令,即可查看 选项表的内

容。Employee表的内容如图3.14所示。

字段名称

表的多笔记录

3.2.5 查看视图

视图(Views)是一种虚拟表,它的所有数据均来自表,本身并不存储数据。视图的记 录数据由某些表(一般是多个)的某些字段组成。视图的查看和表的

查看类似,其具体步骤如下:

在SQL Server Management Studio窗口中,打开Adventure- Works数

据库。选择“视图”选项,然后在右侧窗口中选择要查看的 视图(这里查看vEmployeeDepartment视图),并右击鼠标。在弹出 的快捷菜单中选择“修改”命令。

图 3.14 Employee 表的内容

实讲实训 多媒体演示 多媒体演示参见 配套光盘中的\\\\视 频 \\ 第 3 章 \\ 查看 视 图.avi。

面部分显示了视图所包含的表,表中每一个字段的前面有一个复选框,处于选中状态表示 视图包含该字

段。

如果要查看视图内容,可在视图上右击鼠标,在打开的快捷菜单中选择“打开视

图”选项,即可看到视图的内容,如图3.16所示。

注 意

由图3.16可看到,视图看起来和表一样,但是它的数据是来自所使用的表,本身并不 存 储数据。

此时,可打开视图的结构(设计)窗口,如图3.15所示。上

该视图包含4个表

67

处于选中状 态表示视图 包含该字段

字段名称 字段所 在的表

建立该视 图的 SQL语句

图 3.15 视图的结

当前记录/总记录

数 图 3.16 视图的内容

3.2.6 查看存储过程

存储过程是预先使用SQL语言编写的,经过SQL Server编译后,存 储在SQL Server中的程序,因此执行效率比较高,而且可以重复调用。 下面仍以

AdventureWorks数据库为例,介绍存储过程的查看。具

体操作步骤如下:

实讲实训 多媒体演示 多媒体演示参见 配套光盘中的\\\\视 频 \\ 第 3 章 \\ 查看 存 储过程.avi。

在 SQL Server Management Studio 窗 口中,打开 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.2.7 查看用户和角色

用户(User)是对数据库有存取权限的使用者。角色(Roles)是

指一组数据库用户的集合(和Windows中的用户组类似)。数据库中 的角色可以根据需要添加。用户如果被加入到某一角色,则将具有该 角色所拥有的权限。

查看数据库的用户和角色的具体操作步骤如下:

在SQL Server Management Studio窗口中,打开Adventure-

Works数据库。选择“安全性”|“用户”选项,即可看到数据库包含

实讲实训

多媒体演示 多媒体演示参见 配套光盘中的\\\\视 频 \\ 第 3 章 \\ 查看 用 户和角色.avi。

图 3.20 存储过程的属性窗口

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 数据库的角

双击要查看的数据库角色,例如db_owner,可显示角色的属性,如图3.24所示。

数据库所包含的数据库角色,如图3.23所示。

默认的10 个 数 据库角色

图 3.24 数据库角色的属

提 示

应用程序角色是一个数据库主体,它使应用程序能够使用其自身及类似用户的特权 来运行。使用应用程序角色,可以只允许通过特定应用程序连接的用户访问特定数据。与 数据库角色不同的是,应用程序角色默认情况下不包含任何成员,而且是非活动的。因为 应用程序角色是数据库级别的主体,

所以它们只能通过其他数据库中授予guest用户账户的

权限来访问这些数据库。因此,任何已禁用的guest用户账户的数据库对其他数据库中的应 用程序角色都是不可访问的。

3.2.8 数据库架构

架构是单个用户所拥有的数据库对象的集合,这些对象形成单个命名空间。命名空间 是一组名称不重复的对象。例如,只有当两个表位于不同的架构中时才可以具有相同的名 称。数据库对象(例如,表)由架构所拥有,而架构由数据库用户或角色所拥有。当架构 所有者离开单位时,会在删除离开的用户之前将该架构的所有权移交给新的用户或角色。 例如,假设用户userA拥有架构schemaA,而表Table1、Table2为架构schemeA所拥有。 当用户userA离开单位时,则可以将schemaA的所有权移交给用于管理Table1和

Table2表的

新用户 userB 。当 userB 拥有 schemaA 后,同时 也 拥有了对 Table1 和 Table2的所有权。

1. 查看数据库架构

查看数据库架构的具体操作步骤如下:

实讲实训 多媒体演示 多媒体演示参见 配套光盘中的\\\\视 频 \\ 第 3 章 \\ 查看 数

据库架构.avi。

Works数据库。| 选择“安全性”“

在SQL Server Management Studio窗口中,打开Adventure-

架构”选项,即可看到Adventrue Works

数据库所包含的架构,如图3.25所示。

图 3.25 AdventureWorks 数据库所包含的架构

在架构名称上双击,例如HumanResources,即可打开架构的属性窗口,如图3.26

所示。

要设置架构的权限,可以在左侧窗口中单击“权限”选项,打开“权限设置”界

3.27所示。 面,如图

可以通过单击“添加”按钮为架构添加用户或者角色来设置架构的所有者。当架构被 新用户或者角色所拥有时,其所拥有的表等对象也将被新用户或角色所拥有。

图 3.26 架构的属性窗

图 3.27 架构权限设

2. SQL Server 2005 中的用户架构分离

在SQL Server 2000中,数据库用户和架构是隐式连接在一起的。每个数据库用户都是 与该用户同名的架构的所有者。对象的所有者在功能上与包含它的架构所有者相同。因而, SQL Server 2000中的完全限定名称的“架构”也是数据库中的用户。因此,从SQL Server 2000 数据库中删除用户之前,管理员需要删除该用户所拥有的所有对象或更改这些对象的所有

者。以包含此对象的SQL Server 2000数据库为例:

accounting.ap.george.reconciliation

此对象的所有者为用户“george”。如果管理员需要删除用户george,则必须先删除此 对象或更改此对象的所有者。在后一种情况下,可以按如下方式将其重命名:

accounting.ap.sandra.reconciliation

转让对象的所有权也会更改其完全限定名称。引用accounting.ap.george.reconciliation 的任何代码必须经过更新以反映对名称所做的更改。

在SQL Server 2005中,架构独立于创建它们的数据库用户而存在。可以在不更改架构 名称的情况下转让架构的所有权。并且可以在架构中创建具有用户友好名称的对象,明确 指示对 象的 功能。 例如 ,除

了 accounting.ap.sandra.reconciliation 外 ,

还 可 以

建 名

accounting.ap.invoice.reconciliation的架构。因为“invoice”不是用户,所以从数据库中删除 用户后,无需更改此名称。这就简化了数据库管理员和开发人员的工作。

将架构与数据库用户分离对管理员和开发人员而言有下列好处:

y 多个用户可以通过角色成员身份或Windows组成员身份拥有一个架构。这扩展了允 许角色和组拥

有对象的用户熟悉的功能。

y 极大地简化了删除数据库用户的操作。

y 删除数据库用户不需要重命名该用户架构所包含的对象。因而,在删除创建架构 所含对象的用

户后,不再需要修改和测试显式引用这些对象的应用程序。 y 多个用户可以共享一个默认架构以进行统一名称解析。

y 开发人员通过共享默认架构可以将共享对象存储在为特定应用程序专门创建的架 构中,而不是

DBO架构中。

y 可以用比早期版本中的粒度更大的粒度管理架构和架构包含的对象的权限。

y 完全限定的对象名称现在包含4个部分:server.database.schema和object。

SQL Server 2005还引入了“默认架构”的概念,用于解析未使用其完全限定名称引用 的对象的名称。在SQL Server 2000中,首先检查的是调用数据库用户所拥有的架构,然后 是DBO拥有的架构。在SQL Server 2005中,每个用户都有一个默认架构,用于指定服务器 在解析对象的名称时将要搜索的第一个架构。

3.3

数据库的建立和删除

在SQL Server中,建立数据库的方法不只一种,可以使用SQL Server Management Studio 直接建立,也可以使用SQL语言来创建数据库。关于SQL语言的使用则将在第5章介绍。

3.3.1 建立数据库

直接建立数据库是在SQL Server Management Studio窗口中进行的,大多数情况下,应 该使用这种方式来创建一个数据库,因为图形化界面比Transact-SQL更容易使用。若要创建

数据库,必须确定数据库的名称、所有者、大小以及存储该数据库的文件和文件组。

在创建数据库之前,应注意下列事项:

y 若要创建数据库,必须至少拥有CREATE DATABASE、CREATE ANY DATA- BASE或ALTER ANY

DATABASE权限。

y 在SQL Server 2005中,对各个数据库的数据和日志文件设置了某些权限。如果这 些文件位于

具有打开权限的目录中,那么以上权限可以防止文件被意外篡改。 y 创建数据库的用户将成为该数据库的所有者。

y 对于一个SQL Server实例,最多可以创建32 767个数据库。

y 数据库名称必须遵循为标识符指定的规则。标识符不能是Transact-SQL保留字。 SQL Server保

留其保留字的大写和小写形式。并且不允许嵌入空格或其他特殊字 符。

y model 数据库中的所有用户定义对象都将复制到所有新创建的数据库中。可以向 model数据库

中添加任何对象(例如,表、视图、存储过程和数据类型),以便将 这些对象包含到所有新创建的数据库中。

创建新数据库的具体操作步骤如下:

在SQL Server Management Studio中,选择“数据库”文件夹, 在上面右

击鼠标,在弹出的快捷菜单上选择“新建数据库”命令。

此时,会打开“新建数据库”窗口。在“数据库名称”文本

框中输入新建数据库的名字,例如bookdb,如图3.28所示。

在此输入新建数据库的名字,该名字 必须符合SQL Server命名规范

单击可以添加 数据库文件 实讲实训 多媒体演示 多媒体演示参见 配套光盘中的\\\\视 频 \\ 第 3 章 \\ 新建 数 据库.avi。

图 3.28 “新建数据库”窗

在“数据库文件”栏中,可以设置文件的名称、位置及大小。数据库文件的逻辑

名称默认与数据库名称相同,用户可以修改这个名字,而且,可以指定多个文件。在“路 径”一栏中,可以通过单击

按钮来指定文件所在的位置。

在“初始大小”一栏中,以MB为单位输入数据库文件的大小。 在“自动增长”一栏中,可以选择文件是否自动增长和是否有最大限制。单击bookdb 按钮对应的 ,打开“更改bookdb的自动增长设置”对话框,如图3.29所示。如果选择了 “启用自动增 ,表示数据库的数据容量超过了初始大小时,数据文件可以自动 增加。设置完成后,单击“确长”复选框

定”按钮。

表示数据文

件 可以自动增长

按照百分比增加

按照字节数增加 图 3.29 “更改 bookdb 的自动增长设置”对话框

提 示

由于新建数据库是以model数据库为模板创建的,因此,其大小不可能低于2MB(这 里 假定model数据库的大小为2MB,如果model数据库数据文件的大小为其他数值,则不能 低于该数值),并且必须以1M的整数倍来创建。另外,数据库大小虽然可以自动增长,但 是增长 后会造成数据库在磁盘中存放不连续,容易降低数据库的效率,因此建议先估算数 据库所需容量,再一次给定适当的大小。

在“选项页”栏中,选择“选项”选项,打开“新建数据库”的选项设置窗口, 如图3.30所

示。在“排序规则”下拉列表框中,可以选择要使用的排序规则。不过,大多 数情况下,选择“(服务器默认值)”即可满足要求。在“恢复模式”列表框中,可以选 择数据库发生损坏时的恢复模式。在“其他选项”栏中,可以设置其他数据库选项。

同样,在“选项页”栏中,选择“文件组”选项,打开“文件组”设置窗口,可

以对文件组进行设置。关于文件和文件组的设置,可以参考3.3.3节的内容。

设置完成后,单击“确定”按钮,即可创建bookdb数据库,SQL Server不会返回

任何提示信息。可以在“对象资源管理器”窗口的“数据库”文件夹下看到新创建的数据 库。

3.3.2 删除数据库

当不再需要数据库或者如果它被移到另一数据库或服务器时,即可删除该数据库。数

据库删除之后,文件及其数据都从服务器上的磁盘中删除。一旦删除数据库,它即被永久 删除,并且不能进行检索,除非使用以前的备份。

删除数据库的操作步骤如下:

图 3.30 “新建数据库”的选项设置窗口

打开SQL Server Management Studio窗口,打开“数据库”文件夹。 右击要删除的数据库,然 后在弹出的快捷菜单中选择“删除”命令。将会弹出“删 除对象”窗口。

单击“确定”按钮,确认删除。

删除数据库的同时,SQL Server会自动删除存储这个数据库的文件。

注 意

在数据库删除之后应该备份master数据库,因为删除数据库将更新master数据库中的

系统表。如果master需要还原,则从上次备份master之后删除的所有数据库都将仍然在系 统表中有引用,因而可能导致出现错误信息。

3.3.3 数据库文件和文件组设置 文件组允许对文件进行分组,以便于管理和数据的分配及放置。例如,可以分别在3 个磁盘驱动器上创建3个文件(Data1.ndf、Data2.ndf 和 Data3.ndf),并将这3个文件指派到 文件组fgroup1中。然后,可以明确地在文件组fgroup1上创建一个表。对表中数据的查询将 分散到3个磁盘上,因而性能得以提高。在RAID(独立磁盘冗余阵列)条带集上创建单个 文件也可以获得相同的性能改善。然而,文件和文件组使用户得以在新磁盘上轻易地添加 新文件。另外,如果数据库超过单个Microsoft Windows文件的最大大小,则可以使用次要

数据文件允许数据库继续增长。

“文件组”选项卡可以用来创建、删除文件组,并可以设置文件组是否为只读。创建 文件组后,可以将文件放入到文件组中,这可以通过数据库的“文件”选项来完成。

设置文件和文件组的操作步骤如下:

打开SQL Server Management Studio窗口,在“对象资源管理 器”窗

口中,打开“数据库”文件夹。

右击要更改的数据库,这里以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。

为了避免造成数据库中数据的丢失,在更改数据库属性时,要更改数据文件或者日志 文件的大小,SQL Server只允许增大文件的大小,而不允许减小文件的大小。

SQL Server 2000允许收缩数据库中的每个文件以删除未使用的页。数据和事务日志文 件都可以收缩。数据库文件可以作为组或单独地进行手工收缩。数据库也可设置为按给定 的时间间隔自动收缩。该活动在后台进行,并且不影响数据库内的用户活动。

收缩数据库的操作步骤如下:

打开SQL Server Management Studio窗口,在“对象资源管理 器”窗

口中,打开“数据库”文件夹。

右击要收缩的数据库,依次选择“任务”|“收缩”|“数据

库”命令,打开“收缩数据库”对话框,如图3.34所示。

单击“确定”按钮,即可创建新的文件组,并将要创建的文件添加到该文件组中。

实讲实训

多媒体演示 多媒体演示参见 配套光盘中的\\\\视 频 \\ 第 3 章 \\ 收缩 数 据库.avi。

收缩后数据库中剩 余的可用空间量。 以“数据库大小” 栏中的“可用空间” 值作为依据

选择该选项可 使 释 放的文件空间 保 留 在数据库文件中,并 使包含数据的 页 移 到数据库文件 的 起 始位置

图 3.34 “收缩数据库”对话

文件”对话框,如图3.35所示。

设置好各种选项后,单击“确定”按钮,即可对选择的文件进行收缩。 如果要收缩个别的数据

库文件,可以在步骤中选择“文件”命令,打开“收缩

图 3.35 “收缩文件”对话

设置好各种选项后,单击“确定”按钮,即可对选择的文件进行收缩。

注 意 不能将整个数据库收缩到比其原始大小还要小,也不能将数据库的大小收缩到小于 model数据库的大小。因此,如果数据库创建时的大小为10MB,后来增长到100MB,则该 数据

。 库最小能够收缩到10MB(假定已经删除该数据库中所有数据)

3.4

表的建立、删除与修改

数据库 建立 后,接 下来 就该建 立存 储数据 的表 。本节 主要 介绍使 用 SQL Server

Management Studio来建立表,并对表进行修改和删除。 3.4.1 新建表

使用企业管理器建立一个表的过程是非常简单的,下面的操作是 在bookdb数据库中建立一个book表。具体操作步骤如下:

打开SQL Server Management Studio窗口,打开“数据库”文 件夹。 在打开的bookdb文件夹中“表”选项上面右击鼠标,选择“新

建表”命令,打开表设计窗口。

在“列名”栏中依次输入表的字段名,并设置每个字段的数

据类型和长度等属性。输入完成后的book表如图3.36所示。

book表的 各个字

实讲实训 多媒体演示

多媒体演示参见 配套光盘中的\\\\视 频 \\ 第 3 章 \\ 新建 表.avi。

单击可选择 数据类型

图 3.36 创建

一般说来,每个表都应该包含一个主键。例如,book表的主键应该为book_id字段。 在book_id字

段上右击鼠标,然后选择“设置主键”命令,即可将book_id字段设置为主键。 此时,该字段前面会出现一个钥匙图标,如图3.37所示。

钥匙图标表示 该字段为主键

图 3.37 设置主

提 示

如果要将多个字段设置为主键,可按住Ctrl键,单击每个字段前面的按钮来选择多个

字段,然后再依照上述方法设置主键。

表字段设置完成后,单击工具栏上的“保存”按钮

输入book,如图3.38所示。 单击“确定”按钮,即可创建

,打开“选择名称”对话框,

book表。

依照上述步骤,再创建3个表:orderform表、authors表和clients表。表的结构分别 、图3.40和图3.41所示。 如图3.39

图 3.38 保存 book 表

图 3.39 orderform 表的结构

提 示

图 3.40 authors 表的结构

图 3.41 clients 表的结构

这些表将在后面的讲解中作为例子使用。

3.4.2 修改表的结构

表结构的修改和查看的操作步骤是相同的,下面给book表中加入 author字段。操作步骤如下:

在SQL Server Management Studio的右侧窗口中,在dbo.book

表上右击鼠标,然后选择“修改”命令。

在打开的表设计窗口中,右击book_name字段,然后选择“插

入列”命令。

在新插入的列中,输入author_id,设置数据类型为int,如图3.42所示。

实讲实训

多媒体演示 多媒体演示参见 配套光盘中的\\\\视 频 \\ 第 3 章 \\ 修改 表 的结构.avi。

新插入的字段

图 3.42 插入字段

author

3.4.3 建立表间的关联 下面建立上述4个表的关联,操作

步骤如下:

在SQL Server Management Studio窗口中,打开bookdb数据

提 示 用户也可以修改已有的字段,包括名称和数据类型等。

实讲实训

多媒体演示 多媒体演示参见 配套光盘中的\\\\视 频 \\ 第 3 章 \\ 建立 表 关联.avi。

库,选择“数据库关系图”选项,右击鼠标,在弹出的快捷菜单上选择“新建数据库关系 图”命令,打开“添加表”对话框。如图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.4.4 删除表

图 3.49 提示对话框

有时需要删除表(如要实现新的设计或释放数据库的空间时)。删除表时,表的结构定

义、数据、全文索引、约束和索引都永久地从数据库中删除,原来存放表及其索引的存储 空间可用来存放其他表。

如果是单个的表,与其他表没有关联,则可以直接删除。操作步骤如下:

在SQL Server Management Studio窗口中,在“数据库”文件夹下,打开相应的数 据库,然后

选择“表”选项。

右击要删除的表,然后在弹出的快捷菜单中选择“删除”命令。

此时,会打开“删除对象”窗口,单击“确定”按钮即可删除选择的表。

但是如果要删除的表与其他表存在关联,则在删除表时会出现错误。下面以bookdb数 据库中的authors表为例,来介绍这种情况下删除表时的出错信息。操作步骤如下:

在SQL Server Management Studio中,在“数据库”文件夹下,打开bookdb数据库, 选择“表”选

项。

3.50所示。出现这种错误的原因就是authors表与其他表间存在关联。如果该表被删除了, 则原先关联到

此表的表字段可能会找不到数据,所以SQL Server为了保持数据库中数据的 完整性,不允许删除和其他表有关联的表。

此时,可以通过查看表之间的依赖关系来确定出错的详细原因。单击“显示依

赖关系”按钮,打开“authors依赖关系”对话框,如图3.51所示。在此对话框中,选择“依 赖于‘authors’的对象”选项,则“依赖关系”列表框中会显示依赖于表authors的对象; 如果选择“[authors]依赖的对象”选项,则“依赖关系”列表框中会显示表authors依赖的对 象。

在authors表上右击鼠标,然后在弹出的快捷菜单中选择“删除”命令。

此时,打开“删除对象”窗口,单击“确定”按钮,系统提示删除表失败,如图

系统提示消息: 删除失败。单击 可以查 看详 细 的失败信息

图 3.50 “删除对象”窗

单击可 显示 与 该表相 关

联 的 表及其字段

图 3.51 “authors 依赖关系”对

话框

提 示 解决方法之一就是在企业管理器中,按住Ctrl键,然后选择要删除的表及其与之相关 联的表,然后一并删除。

表。在bookdb文件夹下选择“数据库关系图”,然后双击建立的关系图。

此时,会打开关系图窗口,在要删除的关系上右击鼠标,然后选择“从数据库中

删除关系”命令。

如果一定要删除选择的表,而该表又与其他表相关联。则必须将关联先删除,然 后才可以删除

此时,authors表和book表间的关系会被删除。关闭关系图窗口,在出现的提示对

话框中,单击“是”按钮,保存关系图。并在出现的对话框中,单击“确定”按钮即可。

返回到SQL Server Management Studio,依照删除单个表的方法删除表(这里并不

删除表,只是介绍删除过程)。

提 示

在关系图窗口中,直接在要删除的表上右击鼠标,然后选择“从数据库中删除表” 命

令,在打开的提示对话框中,单击“是”按钮。关闭关系图窗口,选择“保存”命令, 也可 以删除表。

3.4.5 记录的新增和修改

记录一般是通过Transact-SQL来添加的,但是从SQL Server 7.0开始,记录的添加和修 改可以通过SQL Server Management Studio来进行。但是需要注意的是,如果表之间有关联 性存在,例如,表A的某个字段参考到表B时,则必须先输入表B的记录,然后才能输入表 A与之相关的记录,否则将会出错。

记录的新增和修改与记录的表内容的查看的操作过程是相同的,就是在打开表的内容 窗口后,直接输入新的记录或者进行修改。

3.5

课堂演练

3.5.1 创建boarddb数据库

创建一个用于公告信息系统的boarddb数据库。操作步骤如下: 在SQL Server Management Studio窗口中,打开“对象资 源管理器”,选择“数据库”文件夹,在上面右击鼠标,在弹出 的快捷菜单上选择“新建数据库”命令。

此时,会打开“新建数据库”窗口。在“数据库名称”

文本框中输入新建数据库的名字boarddb。

在“数据库文件”栏中,设置文件的名称、位置及大小。

在“初始大小”一栏中,输入5。

其他保持默认设置,然后单击“确定”按钮,创建数据库。

3.5.2 创建boarddb数据库中的表

在boarddb数据库中,创建users表和board表。操作步骤如下:

打开SQL Server Management Studio窗口,打开“数据库”文件夹。 打开boarddb文件夹,在 “表”选项上面右击鼠标,选择“新建表”命令,打开表 设计窗口。

在“列名”栏中依次输入users表的字段名,各字段名称、数据类型以及是否为空

如表所示。

字段名称 userID password username sex address email

表3.2 board表的结

字段名称 board_id board_title board_content board_time

本章介绍了如何使用SQL Server Management Studio来管理数据库和表,一般来说,数 据库和表结构的建立和修改都是通过SQL Server Management Studio来完成的。

数据库的物理存储对象是页和区,这两个概念可以用来估算数据库所占用的空间,因 此作为一个数据库管理员,了解这方面的知识还是很有必要的。

创建一个数据库,仅仅是创建了一个空壳,它是以model数据库为模板创建的,因此其 初始大小不会小于model数据库的大小。

在创建数据库时,同时会创建事务日志。事务日志是在一个文件上预留的存储空间, 在修改写入数据库之前,事务日志会自动记录对数据库对象所做的所有修改。

表结构的设计和修改都比较简单,和其查看操作过程是类似的。表的删除操作也很简 单,但是要注意的是,如果与其他表存在关联时,则不能直接删除表。要先删除关联,然 后再删除表。 board_poster

数据类型 uniqueidentifier varchar(100) varchar(50) datetime varchar(50)

允许空 否 否 是 是 是

说明 公告编号 公告题目 公告内容 提交时间 提交用户名

数据类型 varchar(50) varchar(50) varchar(50) bit

varchar(50) varchar(100)

表3.1 users表的结构

允许空 否 否 是 是 是 是

说明 用户名 用户密码 用户姓名 性别 地址 Email

所示。

是 电话 telephone varchar(50)

输入完成后,单击“保存”按钮。在弹出的对话框中输入users。

重复上面的步骤,创建board表,各字段名称、数据类型以及是否为空,如表3.2

3.6 小结

本文来源:https://www.bwwdw.com/article/x4hp.html

Top