当前位置:首页 >> 其它课程 >> SQL2005学习教程较为详细

SQL2005学习教程较为详细


第1章

SQL Server 2005关系数据库

SQL Server 2005是Microsoft推出的新一代数据管理和分析 解决方案。它为企业级应用数据和分析程序提供了增强 的安全性、可伸缩性和高可靠性,使其适用于从移动设 备到64位系统的各种平台。同时更加易于创建、部署和 管理。本章将在简要介绍关系数据库基础知识之后,详 细介绍SQL Server 2005的基础知识,主要包括以下知识 点。 ? 关系数据库基础; ? SQL Server 2005概述; ? SQL Server 2005的版本与组件。

1.1

关系数据库

自20世纪80年代以来,新推出的数据库管理系统几乎都支 持关系模型。非关系型系统的产品也大都加上了关系接 口。关系模型是目前最重要的一种数据模型。关系数据 库系统采用关系模型作为数据的组织方式。数据库领域 当前的研究工作也都是以关系方法为基础的。下面将简 要介绍关系数据库的一些基本术语、关系模型的主要特 点以及关系的基本运算等知识。

1.1.1

什么是关系模型

在关系模型中,现实世界的实体以及实体间的各种联系均用关系来 表示。在用户看来,关系模型中数据的逻辑结构是一张二维表,它 由行和列组成。现以如表1-1所示的学生信息表为例,介绍关系模 型中的一些术语。
学号 051040101 051040102 061040101 061040102 071040101 081040101 081040102 姓名 王海涛 岳小东 姚兰 林燕 唐铭 蒋燕 张春艳 性别 男 男 女 女 男 女 女 出生日期 1987.10.17 1988.03.07 1989.08.10 1991.12.25 1992.12.15 1991.03.25 1992.08.25

1.1.2

关系模型的特点

关系模型看起来简单,但是并不能把日常手工管理所用的各 种表格,按照一张表一个关系直接存放到数据库系统中 。在关系模型中对关系有一定的要求,它必须具有以下 特点: (1)关系必须规范化。 (2)在同一个关系中不能出现相同的属性名,即不允许有 相同的字段名。 (3)关系中不允许有完全相同的元组(记录)。 (4)在一个关系中元组的次序无关紧要。 (5)在一个关系中列的次序无关紧要。

1.1.3

关系运算

对关系数据库进行查询时,需要找到用户感兴趣的数据,这 就需要对关系进行一定的关系运算。关系的基本运算有 两类:一类是传统的集合运算(并、差、交),另一类 是专门的关系运算(选择、投影、联接)。下面简要介 绍选择、投影、联接这3种基本的关系运算。 1.选择 2.投影 3.联接

1.1.4

关系模型的三类完整性规则

为了维护数据库中数据与现实世界的一致性,关系数据库的 数据与更新操作必须遵循以下3类完整性规则。 1.实体完整性规则(Entity Integrity Rule) 2.参照完整性规则(Reference Integrity Rule) 3.用户定义的完整性规则

1.1.5

主流关系数据库产品

目前,关系型数据库管理系统中主要有大型数据库Oracle、 SQL Server和DB2,大中型数据库Sybase和Informix,开 源数据库MySQL和PostgreSQL以及桌面型数据库 Microsoft Access等。另外,值得注意的是国产数据库也 逐步成熟起来。下面简要介绍这些数据库产品。 1.Oracle 2.DB2 3.Sybase Adaptive Server Enterprise 4.Informix Dynamic Server 5.MySQL 6.PostgreSQL 7.Microsoft Access 8.国产数据库

1.1.6

Transact-SQL语言简介

结构化查询语言SQL(Structured Query Language)是IBM公司 在20世纪70年代开发的查询语言。1986年10月,美国国家标准 局(American National Standard Institute,ANSI)的数据库 委员会批准了SQL作为关系数据库语言的美国标准。同年,公 布了标准SQL文本。1987年6月,国际标准化组织( International Organization for Standardization,ISO)将其规 定为国际标准,该标准称为SQL-86。 Transact-SQL语言也有类似于SQL语言的分类。Transact-SQL语 言主要由以下几部分组成。 ? 数据定义语言(DDL) ? 数据操纵语言(DML) ? 数据控制语言(DCL) ? 系统存储过程(System Stored Procedure) ? 一些附加的语言元素

1.2

SQL Server 2005概述

SQL Server 2005是Microsoft公司于2005年发布的一款数据 库平台产品。该产品不仅包含了丰富的企业级数据管理 功能,还集成了商业智能等特性。它突破了传统意义的 数据库产品,将功能延伸到了数据库管理以外的开发和 商务智能,为企业计算提供了完整的数据管理和分析的 解决方案,给企业级应用数据和分析程序带来更好的安 全性、稳定性和可靠性,使它们更易于创建、部署和管 理。

1.2.1

SQL Server的发展

SQL Server数据库经历了长期的发展过程,现已成为商业应 用中最重要的组成部分。

1.2.2

SQL Server 2005的系统架构

微软公司重新对SQL Server数据库进行了设计。新的架构中主要 包括了数据库引擎、分析服务(Analysis Services)、集成服务 (Intergaration Servieces)、通知服务(Notification Services )和报表服务(Reporting Services)等,其架构如图1-1所示。 1.SQL Server 2005数据库引擎(Database Engine) 2.SQL Server 2005分析服务(Analysis Services) 3.SQL Server 2005集成服务(Integration Services) 4.SQL Server 2005复制(Replication) 5.SQL Server 2005报表服务(Reporting Services) 6.SQL Server 2005通知服务(Notification Services) 7.SQL Server 2005服务代理(Service Broker) 8.SQL Server 2005全文搜索(Full Text Search) 9.SQL Server 2005实用工具

1.3

SQL Server 2005的版本与组件

为了更好地满足不同客户的需求,微软重新设计了SQL Server 2005产品家族,将其分为5个新的版本: Enterprise Edition(企业版)、Standard Edition(标准 版)、Workgroup Edition(工作组版)、Developer Edition(开发版)和Express Edition(学习版)。在安 装SQL Server 2005之前,用户需要了解各个版本所提供 的不同功能和组件,了解它们的差别,以便在安装时做 出正确的选择。

1.3.1

SQL Server 2005的版本

微软为用户提供了5种版本的SQL Server 2005,它们共同组 成了SQL Server 2005的产品家族,分别为不同类型和需 求的用户提供不同的服务。 1.企业版(32位和64位) 2.标准版(32位和64位) 3.工作组版(仅适用于32位) 4.开发版(32位和64位) 5.学习版(仅适用于32位)

1.3.2

SQL Server 2005的组件

利用SQL Server数据库,用户可以管理两种类型的数据库: 联机事务处理(OLTP)数据库和联机分析处理(OLAP )数据库。 ? OLTP数据库 ? OLAP数据库

1.4

小结

本章通过介绍关系数据库的基本概念及关系数据库管理系统 主流的产品,同时简要叙述了基于关系数据库的结构化 查询语言(SQL)的功能,使初学者对数据库系统方面 的知识有了一个基本的了解和认识。通过对SQL Server 2005的系统架构及组件的介绍,对其版本及其应用环境 的分析,让初学者初步认识SQL Server 2005,并能根据 自己的应用环境需求去选择数据库管理系统的版本和组 件。 第2章将学习SQL Server 2005数据库系统实例的安装与升级 ,主要包括准备安装SQL Server 2005、安装过程、安装 后的程序与服务、安装SQL Server 2005 SP2以及升级到 SQL Server 2005等知识。

1.5

习题

1.关系数据库中的关系是指什么? 2.列出一个部门的人事表,并分析表中的相关属性。 3.利用SQL Server 2005可以完成哪些方面数据管理功能? 4.SQL Server 2005有哪些版本,它们应用环境有什么不同? 5.分析SQL Server 2005系统组件及功能。

第2章

安装SQL Server 2005

正确安装SQL Server 2005数据库,对于初学者来说是至关 重要的。因为,这一过程不仅要求根据实际的业务需求 ,选择正确的数据库版本;还要求检测计算机软、硬件 条件是否满足该版本的最低配置,以确保安装的有效性 和可用性。本章将详细介绍SQL Server 2005数据库的安 装与升级过程,主要包括以下知识点。 ? 准备安装SQL Server 2005 ? 安装过程 ? 安装后的程序与服务 ? 安装SQL Server 2005 SP2 ? 升级到SQL Server 2005

2.1

准备安装SQL Server 2005

计划安装SQL Server 2005数据库时,确保计算机满足最低 的硬件和软件需求。一般还要适当考虑数据库未来的发 展需求。SQL Server 2005数据库的安装程序,在不满足 安装所要求的最低配置时,将会给出提示。

2.1.1

选择正确的SQL Server 2005数据库版 本

SQL Server 2005数据库包含多个版本,每一个版本都针对 不同的用户群体。因此,在安装SQL Server 2005数据库 软件时,确定安装版本是非常重要的,这是因为选择的 版本不仅决定可安装的内容和组件,而且确定了SQL Server 2005安装所需软、硬件等环境要求。 SQL Server 2005数据库产品家族主要包括5个版本。用户可 根据业务实际需求、应用类型以及未来数据库的发展趋 势选择并确定数据库版本。

2.1.2

安装的硬件要求

计划安装SQL Server 2005数据库时,不仅要选择正确的 SQL Server 2005数据库版本,而且还要确保安装数据库 的计算机满足SQL Server 2005的硬件的最小需求,并能 够适应当前和未来数据库的发展需求。下面介绍安装 SQL Server 2005数据库时要求的硬件环境。 1.处理器要求 2.内存要求 3.磁盘空间要求 4.附加硬件要求

2.1.3

操作系统支持及软件要求

SQL Server 2005数据库安装前,要求对操作系统及相关软 件进行检测,只有满足其最低的版本要求后,才能进行 安装。否则,可能造成组件安装不全,或者系统安装失 败。 1.对操作系统的要求 2.对环境的要求

2.1.4

基本安装选项

在实际安装过程中,可以使用安装向导的“功能选择”页, 来选择SQL Server 2005安装中要包括的组件。默认情况 下不选择树中的任何功能,如图2-1所示。

2.1.5

安装注意事项

在准备安装SQL Server 2005前,用户还需要注意以下事项 : ? 要使用具有管理员权限的账户来安装SQL Server 2005。 ? 要安装SQL Server 2005的硬盘分区必须是未经压缩的硬 盘分区。 ? 安装时建议不要运行任何杀毒软件。

2.2

安装过程

本节将指导用户在Windows XP Professional SP2环境下,完 成SQL Server 2005开发版一个数据库实例的实际安装过 程。

2.2.1

什么是SQL Server实例

SQL Server 2005数据库引擎实例,包括一组该实例私有的 程序和数据文件,同时也和其他实例共用一组共享程序 或文件。SQL Server 2005其他类型的实例,如分析服务 、报表服务也使用相同的机制,拥有这些实例自己的一 组程序和数据文件。 一台计算机上可以包括一个或多个SQL Server 2005数据库 实例。每一个实例都独立于其他的实例运行,都可以看 作一个独立的数据库“服务器”。应用程序可以分别连 接到不同的实例进行工作。数据库管理员也是通过连接 到实例,对数据库进行管理和维护的。 1.什么是SQL Server实例名 2.使用多个命名实例

2.2.2

安装SQL Server 2005

微软提供使用安装向导安装SQL Server 2005,或从命令提 示符安装。安装向导提供图形用户界面,引导用户对每 个安装选项做相应的选择。安装向导提供初次安装SQL Server 2005的指南,包括功能选择、实例命名规则、服 务账户配置、强密码指南以及设置排序规则的方案。 命令提示符安装适用于高级方案。用户可以从命令提示符直 接运行安装,也可以从应用安装文件指定安装选项、命 令提示符语法运行安装。

2.2.3

验证安装

SQL Server 2005数据库实例安装完成后,可以通过以下方 式来确认安装是否成功。

2.3

安装后的程序与服务

在安装结束后,用户便可以尝试和感受SQL Server 2005全 新的数据管理以及商业智能平台所具有的强大功能与特 性了。下面简要介绍安装后的SQL Server 2005程序与服 务。

2.3.1

安装后的程序

在安装SQL Server 2005之后,在系统的“开始”|“程序”菜单中 增加了“Microsoft SQL Server 2005”菜单选项以及“Microsoft Visual Studio 2005”菜单选项。这里主要介绍“Microsoft SQL Server 2005”菜单选项所包含的内容,该菜单项提供了Analysis Services、配置工具、文档和教程、性能工具、SQL Server Business Intelligence Management Studio和SQL Server Management Studio共6个菜单子项。 1.Analysis Services 2.配置工具 3.文档和教程 4.性能工具 5.SQL Server Business Intelligence Management Studio 6.SQL Server Management Studio

2.3.2

安装后的服务

在完成SQL Server 2005的安装后,系统服务中将创建有关SQL Server 2005的众多服务。具体创建哪些服务,与用户选择安装的组件相关。 利用“控制面板”中的“管理工具”|“服务”命令,即可打开“服务 ”窗口,如图2-24所示。用户可以使用“服务”窗口提供的功能,启 动、关闭这些服务或者修改服务的属性。 用户也可以通过微软提供的SQL Server Configuration Manager配置管理 工具来启动、关闭这些服务,或设置服务的属性。依次通过单击“开 始”|“程序”|“Microsoft SQL Server”|“配置工具”|“SQL Server Configuration Manager”菜单命令,打开“SQL Server Configuration Manager”窗口,如图2-25所示。

2.4

安装SQL Server 2005 SP2

SQL Server 2005数据库产品自2005年11月正式发布以来, 先后于2006年4月和2007年3月发布了两个重要补丁包( 即SP1和SP2)。微软对客户反馈的一些问题,做出了修 正,并适时的添加了部分新功能,以满足客户新的需求 。SQL Server 2005 SP1(V9.0.2047)除了修正部分问题 外,还包括以下众多新特性: ? 新增了数据库镜像功能。 ? 新增了SQL Server 2005 Express Edition新管理工具—— SQL Server Management Studio Express。 ? 加强了SAP NetWeaver智能商务系统的报告反馈支持功 能。

2.5

升级到SQL Server 2005

SQL Server可以从一个版本升级到另一个版本,也可以升级 到同一版本的某个更高级的版本。前者是指将SQL Server 2000 Service Pack 3(SP3)或更高版本的实例以 及SQL Server 7.0 SP4或更高版本的实例直接升级到SQL Server 2005。后者是指将SQL Server 2005当前版本升级 到SQL Server 2005更高级版本,以改变当前版本类别的 某些规则。

2.5.1

升级方法

通常,升级到SQL Server 2005主要有以下两种方法:InPlace升级和Side-by-Side升级。 1.In-Place升级 2.Side-by-Side升级

2.5.2

使用SQL Server 2005升级顾问

SQL Server 2005升级顾问是用于为升级到SQL Server 2005 做准备的工具。升级顾问对已安装的SQL Server 2000或 SQL Server 7.0组件进行分析,然后生成一个报表。报表 中标识出升级到SQL Server 2005之前或之后必须或应解 决的问题。

2.5.3

升级到SQL Server 2005

升级到SQL Server 2005数据库,需要考虑系统组件的升级 和数据库程序的升级。在运行数据库的迁移时,通常可 以参考以下操作。 (1)升级数据库引擎 (2)升级或迁移分析服务 (3)升级或迁移Data Transformation Services (4)迁移通知服务实例 (5)升级报表服务 (6)升级复制数据库 (7)升级SQL Server组件帮助主题

2.5.4

升级过程中的常见问题

从SQL Server 7.0或SQL Server 2000升级到SQL Server 2005 的过程中,经常会出现以下问题。 1.未能通过SCC计算机扫描 2.操作系统不符合安装要求,安装停止 4.应用程序无法在分布式事务处理中登记SQL Server 2005 资源 4.出现“SQL Server安装程序无法连接到数据库服务进行 服务器配置”的错误消息 5.由于现在SQL Server组件的配置,SQL Server 2005安装 程序失败

2.6

小结

要利用SQL Server 2005完成数据管理,首先必须在实际计 算机环境中正确地安装SQL Server 2005系统。本章开始 从SQL Server 2005各版本安装的软硬件需求进行分析介 绍,而后图文并茂详尽地介绍了32位SQL Server 2005系 统及其补丁的安装过程,最后说明了从旧SQL Server版 本升级到SQL Server 2005的相关问题。初学者在学习本 章时,首要的是掌握SQL Server 2005的安装过程,其次 是注意安装过程中的一些概念,如SQL Server实例、身 份认证等。 下一章将学习SQL Server 2005数据库服务器的配置和管理 ,主要包括使用配置管理器配置SQL Server服务、使用 外围应用配置器配置SQL Server服务、连接与断开数据 库服务器、配置SQL Server 2005服务器属性以及通过日 志查看服务器的运行情况等知识。

2.7

习题

1.什么是SQL Server 2005实例,在一个服务器中是否可以 有多个SQL Server 2005实例存在? 2.安装SQL Server 2005标准版之前需要做哪些准备工作? 3.SQL Server 2005中的哪些组件是必要的? 4.Windows系统中的用户是否都可以作为访问SQL Server 2005系统用户身份? 5.SQL Server 2005系统中,Windows身份验证模式与混合 模式验证有什么不同? 6.选择一个合适的Windows操作系统和SQL Server 2005的 一个版本,并完成在此Windows系统中一个SQL Server 2005数据库实例的安装操作。

第3章

SQL Server 2005服务器管理

对SQL Server 2005数据库服务器的配置与管理,是SQL Server 2005数据库的一般性操作。SQL Server 2005提供 了一系列的管理工具来对其服务器进行配置和管理。本 章将主要介绍如何利用这些工具来完成对SQL Server 2005服务器的配置与管理,主要包括以下知识点。 ? 使用配置管理器配置SQL Server服务 ? 使用外围应用配置器配置SQL Server服务 ? 连接与断开数据库服务器 ? 配置SQL Server 2005服务器属性 ? 通过日志查看服务器的运行情况

3.1

使用配置管理器配置SQL Server服务

SQL Server配置管理器是SQL Server 2005提供的一种配置 工具。它用于管理与SQL Server相关联的服务,配置 SQL Server使用的网络协议,以及从SQL Server客户机 管理网络连接。使用SQL Server配置管理器,可以启动 、停止、暂停、恢复和重新启动服务,可以更改服务使 用的账户,还可以查看或更改服务器属性。

3.1.1

启动、停止、暂停和重新启动SQL Server服务

若要进行SQL Server 2005服务的启动、停止、暂停、恢复 和重新启动等基本操作,可以使用“SQL Server配置管 理器”来完成。

3.1.2

配置启动模式

服务器操作系统启动后,SQL Server 2005服务进程是“自 动”启动、“手动”启动还是被“禁止”启动,这些设 置被称为SQL Server 2005服务的“启动模式”。

3.1.3

更改登录身份

有时候,用户为了保障系统安全,可能对运行SQL Server服 务的权限进行定制。

3.1.4

SQL Server 2005使用的网络协议

若要连接到SQL Server 2005数据库引擎,必须启用网络协 议。SQL Server 2005数据库可一次通过多种协议为请求 服务。客户端用单个协议连接到SQL Server。如果客户 端程序不知道SQL Server在侦听哪个协议,可以配置客 户端按顺序尝试多个协议。SQL Server 2005使用的网络 协议有以下几种。 1.Shared Memory协议 2.TCP/IP协议 3.Named Pipes协议 4.VIA协议 5.Named Pipes与TCP/IP套接字协议

3.1.5

配置服务器端网络协议

使用SQL Server配置管理器,可以配置服务器和客户端网络 协议以及连接选项。如果用户需要重新配置服务器连接 ,以使SQL Server侦听特定的网络协议、端口或者管道 ,则可以使用SQL Server配置管理器。 1.使用SQL Server配置管理器启用要使用的协议 2.为数据库引擎分配TCP/IP端口号 3.参看用户使用何种协议进行操作

3.1.6

配置客户端网络协议

用户可以根据需要管理客户端网络协议,如启用或者禁用、 设置协议的优先级等,以提供更加可靠的性能。 1.启用或禁用客户端协议 2.创建别名

3.1.7

隐藏数据库引擎实例

SQL Server使用SQL Server浏览器服务来枚举本机上的数据 库引擎实例。这使客户端应用程序可以浏览服务器,并 帮助客户端区别同一台计算机上的多个数据库引擎实例 。用户可能希望运行SQL Server浏览器服务来显示指定 的数据库引擎,但同时隐藏其他实例。使用SQL Server 配置管理器可隐藏数据库引擎实例。

3.2

使用外围应用配置器配置SQL Server服 务

使用SQL Server外围应用配置器,可以启用和禁用远程链接 的功能、服务和网络协议等,SQL Server外围应用配置 器帮助进一步配置SQL Server 2005安装。

3.2.1

启动外围应用配置器

选择“开始”|“程序”|“Microsoft SQL Server 2005”|“配置工具 ”|“SQL Server外围应用配置器 ”命令,打开“SQL Server 2005 外围应用配置器”对话框,如图 3-13所示。 在该起始页中,可指定要配置的服 务器,单击“配置外围应用”旁 边的“更改计算机”链接。默认 值为localhost,即为本地计算机 。用户可以选择外围应用配置器 要管理的计算机。

3.2.2

使用服务和连接的外围应用配置器

使用SQL Server外围应用配置器的“服务和连接的外围应用 配置器”,可以启用或禁用Windows服务和远程连接。 在SQL Server外围应用配置器对话框中,单击“服务和 连接的外围应用配置器”链接,即可打开“服务和连接 的外围应用配置器”对话框,如图3-15所示。 1.服务和连接的外围应用配置器的功能 2.设置通过“TCP/IP”远程管理数据库实例

3.2.3

使用功能的外围应用配置器

使用“功能的外围应用配置器”来设置数据库引擎、 Analysis Services和Reporting Services等服务的功能。在 SQL Server外围应用配置器对话框中,单击“功能的外 围应用配置器”连接,即可打开“功能的外围应用配置 器”对话框,如图3-17所示。 1.功能的外围应用配置器的功能 2.设置使用CLR存储过程

3.3

连接与断开数据库服务器

SQL Server Management Studio是SQL Server 2005数据库 产品中最重要的组件。用户可以通过此工具完成对SQL Server 2005数据库的主要的管理、开发与测试任务。本 节将主要介绍如何使用SQL Server Management Studio来 管理SQL Server 2005服务。

3.3.1

启动SQL Server Management Studio

安装好SQL Server 2005数据库之后,即可打开SQL Server Management Studio管理工具。

3.3.2

添加服务器组与服务器

一般情况下,连接到服务器,首先要在SQL Server Management Studio工具中对服务器进行注册。注册类型 包括数据库引擎、Analysis Services、Reporting Services 、Integration Services以及SQL Server Compact Edition 。SQL Server Management Studio记录并存储服务器连接 信息,以供将来连接时使用。 1.注册时一般要求的信息 2.在已注册的服务器中创建服务器组 3.注册连接的服务器 4.连接的服务器的操作

3.3.3

连接到数据库服务器

除了通过先注册,再连接到数据库服务器的方式之外,用户 还可以直接通过“连接到服务器”对话框来连接到数据 库服务器。

3.3.4

断开与数据库服务器的连接

用户可以随时断开对象资源管理器与服务器的连接。断开对 象资源管理器不会断开其他SQL Server Management Studio组件(如SQL编辑器)。其操作步骤如下:在“对 象资源管理器”组件窗口中,右击服务器,然后单击“ 断开连接”命令;或者在对象资源管理器工具栏上单击 “断开连接”按钮,即可断开与数据库服务器的连接。

3.4

配置SQL Server 2005服务器属性

SQL Server 2005服务器的属性使用系统默认设置。用户可 以根据实际的应用环境,使用系统存储过程或通过SQL Server Management Studio图形工具对SQL Server 2005 服务器进行设置,以修改这些默认设置。

3.4.1

查看服务器属性

用户可以使用SQL Server Management Studio工具来查看 SQL Server 2005数据库的服务器属性,包括服务器的操 作系统版本、内存数据等信息。

3.4.2

配置服务器属性

在“服务器属性”对话框中,除了可以查看与SQL Server 2005服务器相关的信息外,用户还可以根据实际的应用 需求,修改这些服务器属性的设置。 1.设置内存属性 2.设置处理器属性 3.设置安全性属性 4.设置连接属性 5.设置数据库属性 6.查看高级属性

3.5

通过日志查看服务器的运行情况

SQL Server 2005数据库提供了功能强大的日志工具,用于 记录数据库系统的运行情况。该工具帮助用户对服务器 进行管理,特别是在出现错误的情况下,使用日志查看 功能,可以缩小原因的范围,帮助及时确定和解决问题 。SQL Server数据库将部分系统事件和用户定义事件, 记录到SQL Server错误日志和Windows应用程序日志中 。

3.5.1

查看SQL Server日志

SQL Server日志记录了完整的SQL Server数据库运行的状态 信息,并以消息的形式记录系统级、应用级操作。用户 可以使用SQL Server Management Studio管理工具,查看 SQL Server日志。

3.5.2

查看Windows系统日志

Windows应用程序日志完整地记录了Windows操作系统上发 生的事件,包括SQL Server和SQL Server代理中的事件 。使用Windows事件查看器可以查看Windows应用程序 日志和筛选信息。

3.6

小结

安装完SQL Server 2005后,需要对SQL Server数据库服务器 进行正确的配置和管理,才能有效地访问SQL Server 2005 数据库服务器,这也是使用SQL Server 2005实现数据管理 的首要操作。本章叙述了如何利用SQL Server 2005提供的 管理工具对数据库服务器进行配置和管理,搭建一个可用 的稳定的高性能的数据库服务环境。读者学习本章后,应 掌握对SQL Server 2005配置和管理的基本方法。 下一章将学习SQL Server 2005数据库的基本操作,主要包括 了解SQL Server 2005数据库、创建数据库、重命名和删除 数据库、修改数据库以及分离与附加数据库等知识。

3.7

习题

1.SQL Server 2005使用的网络协议有哪些?服务端协议和 客户端协议是否必须一致? 2.在“SQL Native Client”中设置的网络协议有什么意义? 3.如何查看和编辑SQL Server 2005服务器的属性? 4.如何启动和停止SQL Server 2005服务? 5.配置服务端和客户端的TCP/IP协议。 6.更改服务器的身份验证方式为“SQL Server验证”模式 ,账号为“sa”。

第4章

SQL Server 2005数据库

数据库是某个企业、组织或部门所涉及的数据的综合。它不 仅反映数据本身的内容,而且反映数据之间的联系。对 数据库的基本操作是数据库管理或开发人员的一项重要 工作。本章将从SQL Server 2005数据库的基础学起,主 要包括以下知识点。 ? 了解SQL Server 2005数据库 ? 创建数据库 ? 重命名和删除数据库 ? 修改数据库 ? 分离与附加数据库

4.1

了解SQL Server 2005数据库

本节将主要介绍SQL Server 2005数据库的一些基础知识, 使读者能够更好地理解数据库的概念。并了解在SQL Server 2005中,文件、文件组和事务日志是如何使用的 。

4.1.1

数据库基础

SQL Server的一个实例可以包含多个数据库。每个数据库中可以 保存相关或不相关的数据。例如,SQL Server实例可以有一个 用于存储职员的数据库;另一个数据库用于存储与产品相关的 数据。或者,一个数据库可以存储当前客户订单数据;而另一 个相关数据库可以存储用于年度报告的历史客户订单。 在SQL Server 2005中,主要包括两种类型的数据库:联机事务处 理(OLTP)数据库和联机分析处理(OLAP)数据库。这里 主要指的是OLTP数据库,也就是一般意义上所说的数据库; 另外,在本书的商业智能部分会向读者介绍一些OLAP数据仓 库相关的知识。在SQL Server 2005中新增了一种数据库快照, 将在数据库维护章节中向读者详细介绍。下面简要介绍这三种 类型的数据库。 1.联机事务处理(OLTP)数据库 2.数据仓库 3.数据库快照

4.1.2

系统数据库

SQL Server 2005包含一些系统数据库,这些数据库记录了 一些SQL Server必需的信息,用户不能直接修改这些系 统数据库,也不能在系统数据库表上定义触发器。SQL Server 2005包含以下几个系统数据库:master、model、 msdb、tempdb和Resource。

4.1.3

文件和文件组

SQL Server 2005使用文件和文件组来管理物理数据库,每 个数据库至少具有两个系统文件:一个数据文件和一个 日志文件。数据库文件里包含数据和对象,如表、索引 、存储过程、触发器、数据类型、角色和视图等。日志 文件里包含恢复数据库的所有事务信息。为了便于分配 和管理,可以将数据文件集合鹄矗?诺轿募?橹小 1.数据库文件 2.数据库文件的存储路径 3.数据库文件的名称 4.数据库文件的大小 5.文件组 6.文件和文件组的设计规则和使用建议

4.1.4

数据库对象

一个数据库往往由多种数据对象构成,SQL Server 2005数 据库的数据元素包括表、视图、索引、主键、外键、存 储过程、触发器、数据类型、约束、默认值、角色、用 户和架构等。这些数据库对象可以通过“SQL Server Management Studio”中的“对象资源管理器”组件窗口 来查看。

4.2

创建数据库

若要创建数据库,必须确定数据库的名称、所有者、大小以 及存储该数据库的文件和文件组。注意,所有者是创建 数据库的用户。在SQL Server 2005中,创建数据库一般 有两种方式:使用工具向导和使用Transact-SQL语句。 下面分别介绍如何使用SQL Server Management Studio提 供的工具向导和Transact-SQL脚本语句来创建数据库。

4.2.1

使用SQL Server Management Studio 创建数据库

在SQL Server Management Studio中,使用图形工具向导来 创建一个“Practice_JWGL”数据库。该数据库包含一个 初始大小为10 MB的数据库文件和一个初始大小为5 MB 的日志文件;数据文件的增长方式为“增量为10 MB,不 限制增长”,日志文件的增长方式为“增量为20%,不 限制增长”,其他参数均采用默认值;并将数据文件和 日志文件存储到“D:\Practice_JWGL”目录中。

4.2.2

使用CREATE DATABASE语句创建数据库

Transact-SQL语言提供了创建数据库的语句CREATE DATABASE。 1.创建未指定文件的数据库 2.创建指定数据文件和日志文件的数据库 3.创建指定多个数据文件和日志文件的数据库

4.3

重命名和删除数据库

SQL Server 2005允许对现有数据库进行重命名操作以及对 不再需要的数据库进行删除操作。下面主要介绍如何使 用SQL Server Management Studio提供的工具向导和 Transact-SQL脚本语句来重命名和删除数据库。

4.3.1

重命名数据库

SQL Server 2005允许对数据库重新命名,但是在重新命名 前,要保证没有用户正在使用该数据库,并且要把数据 库设置为单用户模式(singer-user mode)(设置数据库 为单用户模式的具体操作,详见本书第4章的4.4.9小节) 。并且新的名称必须符合SQL Server 2005的命名规则。 下面分别介绍如何使用SQL Server Management Studio提 供的工具向导和Transact-SQL脚本语句来重命名数据库 。 1.使用SQL Server Management Studio重命名数据库 2.使用Transact-SQL重命名数据库

4.3.2

删除数据库

当不再需要数据库或者它被移到另一数据库或服务器时候, 即可删除该数据库。数据库删除之后,文件及其数据都 从服务器上的磁盘中删除。一旦删除数据库,它即被永 久删除,不能再使用。除非使用以前的备份。不能删除 系统数据库master、model、msdb和tempdb。下面分别 介绍如何使用SQL Server Management Studio提供的工具 向导和Transact-SQL脚本语句来重命名数据库。 1.使用SQL Server Management Studio删除数据库 2.使用Transact-SQL语句删除数据库

4.4

修改数据库

一般情况下,数据库是变化的。伴随着数据量的增长,SQL Server 2005数据库可能有时候不能完全满足用户的需求 ,这就需要用户适时地对数据库进行调整。本节将介绍 SQL Server 2005提供的一些常见的修改数据库的功能及 其具体操作。

4.4.1

扩大数据库

当数据库中的数据库文件和日志文件的空间被占满时,需要 为数据文件和日志文件分配更多的空间。SQL Server 2005可以根据在创建数据库时设定的增长参数自动地扩 大数据文件和日志文件。用户也可以手动地分配额外的 存放数据文件的空间,或者创建新的数据文件空间分配 给数据库。 当数据库未使用“启用自动增长”选项时,如果数据量增加 ,而现有的数据库文件不能满足用户的需求时,需要手 动地增加数据库的大小。

4.4.2

收缩数据库

在SQL Server 2005中,数据库中的每个文件都可以通过删 除未使用的页的方法来缩小。尽管数据库引擎会有效地 重新使用空间,但是如数据库文件无需最初分配的大小 ,可以通过收缩文件来回收这些空间。当由于业务的变 化而要收缩数据库的体积时,可以通过收缩数据库,缩 小数据库的体积。

4.4.3

收缩数据库文件

在SQL Server 2005中,可以使用SQL Server Management Studio的对象管理器来收缩数据文件或日志文件。主要数 据文件不能收缩到小于model数据库中的主文件的大小。

4.4.4

添加和删除数据文件和日志文件

用户可以通过添加数据文件和日志文件来扩展数据库,也可 以通过删除它们来缩小数据库。添加文件是相对容易的 操作,但删除文件相对比较复杂。删除数据文件和日志 文件时,必须确保它们是空文件,即里面不能包含数据 或日志。因此,删除数据文件时,需要首先转移数据到 文件组的其他数据文件中,然后再删除。但是日志文件 不能从一个文件转移到另一个文件,要清除非活动日志 ,必须删除日志或备份,当日志文件中不含有日志记录 时,才可以删除此日志文件。

4.4.5

更改默认文件组

在默认情况下,数据库的默认文件组是主文件组,可以重新 定义默认文件组,但是只能有一个文件组是默认文件组 。重新定义默认文件组后,所有没有初始分配文件组的 数据文件将会自动地分配到默认文件组。因此,有时为 了方便用户管理文件,需要重新定义默认文件组。

4.4.6

数据库选项设置

每个数据库都由一些参数选项来确定数据库的特性,系统管 理员和数据库所有者都可以修改这些参数,并且每个数 据库的参数都是相互独立的,修改其中一个数据库的参 数,不会影响其他数据库。数据库的参数被修改后,就 会自动产生一个检查点,使修改立即生效。我们可以合 理地修改model数据库的参数,使得新创建数据库时参数 的默认值相应变法。数据库主要包含以下几类数据库选 项参数。 ? 恢复选项 游标选项 ? 杂项选项 数据库有效性选项 ? 快照隔离选项 自动选项

4.4.7

更改数据库所有者

数据库的当前所有者可以更改为连接到数据库的任何用户。 但是master、model和tempdb系统数据库不能更改所有者 。我们可以使用SQL Server Management Studio工具来更 改数据库所有者。

4.4.8

移动数据库

根据业务需要,可能要求将数据库文件移动到不同的阵列、 磁盘或目录下,以满足不同策略的需求。例如,关键的 数据库文件放在阵列中,次要或者不常使用的数据文件 可以放在安全性较低一些的大容纳量存储器上。将 “Practice_JWGL”数据库的 “D:\Practice_JWGL\Practice_JWGL.mdf”文件,移动到 “E:\Practice_JWGL”目录下。

4.4.9

更改数据库状态

有时需要对数据库进行某些操作,但又要使数据库保持运行 ,如对数据库进行维护等操作。为了达到这个目的, SQL Server对数据库进行了状态模拟区分,SQL Server 2005包含的数据库状态和模式如下。 ? 离线状态 在线状态 ? 紧急状态 单用户模式 ? 多用户模式 受限用户模式 ? 只读模式 读写模式 在设置数据库状态的过程中,可能需要终止一些不满足新状 态要求的会话和事务,而对于事务的终止操作又有以下 几种类型。 ? Normal Normal with time-out ? Immediate

4.5

分离与附加数据库

当移动数据库或者把数据库更改到同一台电脑的SQL Server 2005服务器的其他实例中时,分离(detach)数据库和附 加(attach)数据库会很有用处。分离数据库操作是指把 数据库从服务器的实例中移除,但是要保证数据库的数 据文件和日志文件完整无损,这些文件还可以重新附加 到数据库的实例中去。

4.5.1

分离数据库

使用SQL Server Management Studio分离 “Practice_JWGL”数据库。

4.5.2

附加数据库

使用SQL Server Management Studio附加已分离的 “Practice_JWGL”数据库。

4.6

小结

数据库是由相关数据组成的一个结构化的集合,数据被处理 后以文件的形式存储在一个或多个外部存储器中。本章 以数据库为重点,先就SQL Server 2005组织管理数据库 的基本概念进行了介绍,而后详细介绍了在SQL Server 2005系统中创建数据库的操作方法和操作过程,一是利 用图形工具向导;二是编写创建数据库的SQL代码,最 后讲述了数据库的基本管理操作,包括数据库的更名、 删除、修改、添加等。 下一章将学习SQL Server 2005数据表对象和索引对象的基 本管理操作,主要包括数据表的基础知识、数据表定义 的管理、表中数据的管理以及索引的管理等知识。

4.7

习题

1.在一个SQL Server实例中含有哪些系统数据库?其作用分别是 什么? 2.数据库文件中包含哪些内容? 3.数据库文件有哪些类型?它们分别用来存放什么信息? 4.什么是分离数据库?分离数据库时应注意哪些问题? 5.创建一个数据库名为test1的数据库,逻辑文件名为 test1database,物理文件名为test1database.mdf,最大容量为 10MB,增长速度为1MB。 6.创建一个数据库名为test2的数据库,逻辑文件名为 test2database,并用ALTER DATABASE语句添加一个新的 database2数据库,大小为10MB,然后将test2database中的数 据库database2数据文件大小修改为20MB,最后向 test2database数据库中添加一个日志文件test2database_log。 7.创建一个数据库名为school的数据库,逻辑文件名为school, 物理文件名为school.mdf。

第5章

SQL Server 2005数据表与索引

在SQL Server 2005中,表是用来存储数据的对象。通常将 同一类或者是相关数据存放在一个数据表中。例如,所 有的学生信息存放在一个表中,而成绩信息都存放到另 一个表中。用户可以通过多种方式访问数据库中的数据 ,但是它们都保存在表中。因此,掌握SQL Server 2005 数据表的相关知识是非常重要的。本章主要包含以下知 识点。 ? 数据表的基础知识 ? 数据表定义的管理 ? 表中数据的管理 ? 索引的管理

5.1

数据表的基础知识

为了更好地理解和掌握SQL Server 2005中数据表的设计与 使用,本节首先简要介绍一下数据表及其相关的基础知 识。

5.1.1

数据表的基本概念

数据表是SQL Server 2005的数据库对象,它存储着数据库 的所有数据。在数据表中,数据以行和列的形式存储在 规范化的二维表格中。SQL Server 2005数据表主要由行 和列构成。 ? 列。用来保存对象的某一类属性,每列又称为一个字段 ,每列的标题称为字段名。 ? 行。用来保存一条记录,是数据对象的一个实例,包括 了若干列信息项。

5.1.2

数据完整性基础

定义表除了要定义每一列的名称、数据类型和长度之外,还 可以为列定义一些其他属性。这些属性也很重要,它们 可以保证数据表的数据完整性和参照完整性。在SQL Server 2005中用于保证以上两种完整性的相关技术有如 下3种。 1.约束 2.规则(Rules) 3.默认值

5.1.3

SQL Server 2005特殊表

SQL Server 2005除了提供用户定义的标准数据表外,还提 供了一些特殊用途的表:分区表、临时表和系统表。 1.分区表 2.临时表 3.系统表

5.1.4

设计数据表

在创建数据表之前,用户首先要做好表的设计工作,然后再 创建表,最后输入数据。数据表的设计是非常重要的, 若数据表设计得不合理,会十分浪费资源,并且有可能 带来不可估量的损失。在设计数据表时,必须确定表的 使用目的、数据的类型以及可以访问每个表的用户。 1.列的数据类型的选择 2.自动生成列的编号或标识符 3.需要数据计算的列 4.加强数据完整性

5.1.5

SQL Server 2005系统数据类型

系统数据类型是SQL Server预先定义好的,可以直接使用。 在实际使用中,SQL Server会自动限制每个系统数据类 型的值的范围,当插入数据库中的值超过了数据类型允 许的范围,SQL Server系统就会报错。SQL Server 2005 提供了7类,共26种的系统数据类型,如图5-2所示。 1.精确数字 2.近似数字 3.时间和日期 4.字符串 5.Unicode字符串 6.二进制字符串 7.其他数据类型 8.特殊数据类型

5.1.6

用户定义数据类型

SQL Server 2005允许用户自定义数据类型,用户自定义数 据类型是建立在SQL Server 2005系统数据类型基础上的 。当用户定义一种数据类型时,需要指定该类型的名称 、建立在其上的系统数据类型以及是否允许为空等。 SQL Server 2005为用户提供了两种方法来创建自定义数据 类型,即使用SQL Server Management Studio图形界面或 者通过系统存储过程sp_addtype。 1.使用SQL Server Management Studio创建用户定义数据 类型 2.利用系统存储过程创建用户自定义数据类型 3.使用SQL Server Management Studio删除用户定义数据 类型 4.利用系统存储过程删除用户自定义数据类型

5.2

数据表定义的管理

在设计完数据表后,接下来的任务就是创建数据表。用户可 以使用SQL Server Management Studio图形化工具创建表 ,也可以使用Transact-SQL语句方便快速地创建数据表。

5.2.1

使用SQL Server Management Studio 设计数据表

使用SQL Server Management Studio图形工具,可以完成 SQL Server 2005数据表的建立、修改、查看和删除等绝 大多数的工作,这是数据库管理员最常用的操作方式。 1.新建数据表 2.修改数据表 3.重命名数据表 4.查看数据表属性 5.删除数据表 6.编写表脚本

5.2.2

使用SQL Server Management Studio 维护数据表

数据库的系统管理员,日常工作中最基本的一项工作就是对 数据表的维护,它包括修改数据表的结构、改变表的排 列顺序以及数据的备份等工作。SQL Server Management Studio提供了方便的图形化界面帮助用户完成这些工作。 下面列举一些常见操作,说明其具体的操作步骤。 1.在数据表中插入新列 2.改变数据表中列的排序规则 3.自动编号列和标识符列 4.可计算的列 5.删除数据列

5.2.3

使用Transact-SQL设计与维护数据表

除了使用SQL Server Management Studio工具之外,用户还 可以使用Transact-SQL语句来设计与维护数据表。下面 简要介绍如何使用Transact-SQL语句来创建和管理数据 表。 1.使用CREATE TABLE语句创建表 2.使用ALTER TABLE语句修改表 3.利用系统存储过程sp_rename重命名表和表中的数据列 4.使用DROP TABLE语句删除表 5.利用系统存储过程SP_help查看表的信息

5.3

表中数据的管理

数据库管理的主要内容是数据,用户或管理员会经常操作、 查询表和视图中的数据,SQL Server Management Studio 工具为用户提供了简便的图形化方式来实现这一功能, 用户也可以在查询编辑器中使用Transact-SQL中的数据 操纵语言(DML)来实现。

5.3.1

查看数据表中的数据

使用SQL Server Management Studio工具可以查看数据表中 的所有记录信息,也可以只查看自己需要的数据。 1.查看数据表中的所有记录 2.查询数据表中的记录

5.3.2

维护数据表中的数据

对数据表中数据的维护操作,是SQL Server 2005用户要掌 握的基本操作。一般的维护过程包括查找表、根据查询 条件查看记录、对表数据记录进行添加、修改和删除等 。 1.添加新的记录 2.修改现有记录 3.删除记录

5.4

索引的管理

索引是数据库中的重要数据对象,通过建立索引可以提高数 据查询速度或者其他操作的效率。SQL Server 2005数据 库提供了多种索引类型。

5.4.1

索引的基础知识

索引可以创建在任意表和视图的列字段上。索引中包含键值 ,这些键值存储在一种数据结构(B-树)中,通过键值 可以快速地找到与键值相关的数据记录。 SQL Server提供了两种形式的索引:聚集索引(Clustered )和非聚集索引(Nonclustered)。聚集索引根据键的值 对行进行排序,所以每个表只能有一个聚集索引。非聚 集索引不根据键值排序,索引数据结构与数据行是分开 的。由于非聚集索引的表没有按顺序进行排列,所以查 找速度明显低于带聚集索引的表。

5.4.2

索引的管理

用户可以使用SQL Server Management Studio工具或者 Transact-SQL语句创建和管理索引。下面介绍如何使用 SQL Server Management Studio工具来创建和管理索引, Transact-SQL语句部分将在下一章中具体介绍。使用 SQL Server Management Studio工具为“学生信息”表创 建一个索引,使其按照性别排序。

5.5

小结

数据表是SQL Server数据库中的一种重要的对象,存储数据 库中所有的数据。SQL Server中的数据表分为永久表和 临时表,前者创建后一直存储在数据库文件中,直到删 除,后者在用户退出或系统修复时被自动删除。数据表 的创建可以利用图形工具向导,也可利用SQL语言代码 。利用SQL Server Management Studio工具和SQL语言代 码实现对数据表中数据的维护和管理。索引是一种特殊 类型的数据对象,利用索引可提高数据表中数据访问的 速度,同时还能够强制实施某些数据完整性。 下一章将学习SQL Server 2005数据完整性的基础知识,主 要包括数据完整性基础知识、约束、规则以及关系图等 。

5.6

习题

1.数据表在结构上有什么特点? 2.创建一数据表的步骤是怎样的? 3.数据表中数据的完整性如何控制? 4.SQL Server 2005中系统表有哪些,作用分别是什么? 5.SQL Server 2005数据表中数据的类型有哪些? 6.创建一个名为“tongxunlu”的数据库,并在数据库中创建一个名为“personal” 的表,其中包括以下字段:编号(int,自动编号)、姓名(char(8),NOT NULL)、性别(char(2),NOT NULL)、出生日期(datetime)、联系方 式(char(16))、备注(text,NULL)。 7.通过建立查询向“个人信息”表中增加“家庭住址”字段(text(20),null) 。 8.从“个人信息”表中删除“性别”字段。 9.在数据库school中添加以下数据表: Students(sid nvchar(10),sname nvchar(12),email nvchar(20),grade nvchar(6)) Teachers(tid nvchar(10),tname nvchar(12),email nvchar(20),salary decimal(7,2)) Courses(cid char(8),cname nvchar(40),hour int(3)) Choices(no int(6),sid nvchar(10),tid nvchar(10),cid char(8),score decimal(6,2))

第6章

SQL Server 2005数据完整性

数据完整性是SQL Server用于保证数据库中数据一致性的一 种机制,以防止非法信息存在于数据库中。SQL Server 2005提供了许多措施来保护数据的完整性,如数据类型 、主键、外键、默认值、约束和规则等。本章将主要讲 述如何使用SQL Server 2005提供的这些措施来实现数据 的完整性,主要包括以下知识点。 ? 数据完整性基础知识 ? 约束 ? 规则 ? 关系图

6.1

数据完整性基础知识

所谓数据完整性是指存储在数据库中的数据是正确的,而且 在逻辑上符合现实情况的要求。例如,不会发生一个学 号对应两个学生,或者某个学生没有学号的情况。设计 数据完整性的目的是为了防止数据库中存在不符合语义 规定的数据,防止错误信息的输入和输出。数据库完整 性一般分为4类:实体完整性、域完整性、引用完整性和 用户定义完整性。

6.1.1

实体完整性

实体完整性的基本思想是标识数据库中存放的每一个实体。 实体就是数据库所要标识的一个实际的物体和事件。例 如,要为高校开发一个教务综合管理系统数据库(如 Practice_JWGL),则该数据库中可能包含学生、教师、 课程和成绩等实体。 实体完整性要求每个实体都保持唯一性。例如,学生信息表 中就不允许出现完全相同的两个或多个学生记录信息。 因此,每个实体都必须拥有一个主键或者其他的唯一标 识列。例如,学生信息表中的学号列、公民信息表中的 身份证号列都可以有效地标识这些实体,保证其唯一性 。SQL Server 2005实现实体完整性主要是通过唯一索引 、UNIQUE约束、PRIMARY KEY约束或IDENTITY属 性,强制表的标识符列或主键来实现的。

6.1.2

域完整性

实体完整性考虑究竟应该向表输入哪些值,而域完整性则考 虑如何限制向表中输入的值的范围。它要求表中指定列 的数据具有正确的数据类型、格式和有效的数据范围。 例如,在成绩表的“成绩”列中,只能输入特定范围内 的值(如0~100),才是合法的数据。 域完整性可以通过强制域完整性限制类型(通过使用数据类 型)、限制格式(通过使用CHECK约束和规则)或限制 可能值的范围(通过使用FOREIGN KEY约束、CHECK 约束、DEFAULT定义、NOT NULL定义和规则)来实现 。

6.1.3

引用完整性

引用完整性又称为参照完整性。在输入或删除记录时,引用 完整性用于维持参照表和被参照表之间的数据一致性。 在SQL Server 2005中,引用完整性通过主键( PRIMARY KEY)和外键(FOREIGN KEY)约束来实 现。 引用完整性用于确保键值在所有表中一致。这类一致性要求 不能引用不存在的值。如果一个键值发生更改,则整个 数据库中,对该键值的所有引用要进行一致的更改。在 被参照表中,当其主键值被其他表所参照时,该行不能 被删除也不允许改变。在参照表中,不允许参照不存在 的主键值。

6.1.4

用户定义的完整性

不同的关系数据库系统根据其应用环境的不同,往往还需要 一些特殊的约束条件。用户定义的完整性即是针对某个 特定关系数据库的约束条件,它反映某一具体应用所涉 及的数据必须满足的语义要求。SQL Server 2005提供了 定义和检验这类完整性的机制,以便用统一的系统方法 来处理,而不是用应用程序来承担这一功能。所有完整 性类别都支持用户定义完整性。 SQL Server 2005提供了一些工具来帮助用户实现数据完整 性,其中最主要的是规则(Rule)、约束(Constraint) 和触发器(Trigger)。触发器将在后面的章节中介绍。 下面将介绍如何使用约束和规则来实现数据完整性。

6.2

约束

约束是SQL Server提供的自动保持数据库完整性的一种方法 。它是数据库服务器强制用户必须遵从的业务逻辑。它 通过限制字段中的数据、记录中的数据和表之间的数据 来保证数据的完整性。在数据库设计器中创建约束时, 约束遵从用于创建和更改表的ANSI标准。SQL Server 2005提供了下列约束机制来强制列中数据的完整性。 ? PRIMARY KEY约束 ? UNIQUE约束 ? CHECK约束 ? DEFAULT定义 ? 允许空值 ? FOREIGN KEY约束

6.2.1

PRIMARY KEY约束

PRIMARY KEY约束是指通过表的主键实现的实体完整性 约束。为了能够唯一确定表中的数据行,通常会通过一 列或几列来唯一地标识表中的行。这样的一列或多列称 为表的主键(PRIMARY KEY)。如图6-2所示, ProductVendor表中的ProductID和VendorID列构成了针 对此表的复合PRIMARY KEY约束。这确保了ProductID 和VendorID的组合是唯一的。 1.建立PRIMARY KEY约束的规则 2.使用表设计器建立PRIMARY KEY约束 3.使用SQL语句建立PRIMARY KEY约束

6.2.2

UNIQUE约束

UNIQUE约束(唯一性约束)主要用于非主键列,以保证一 列或者多列的组合值具有唯一性,以防止在列中输入重 复值。例如,在用户信息表中,用户名列已设置为主键 ,但是其中还包括身份证号码列,由于身份证号码不可 能出现重复,所以可以在此列上建立UNIQUE约束,确 保不会输入重复的身份证号码。 1.利用表设计器建立UNIQUE约束 2.使用SQL语句建立UNIQUE约束

6.2.3

CHECK约束

CHECK约束(检查约束)的主要作用是限制输入到一列或 多列中数据的可能值,从而来保证SQL Server数据库中 数据的域完整性。例如,可以在建立用户使用库时,强 制用户的密码在10位长度以上。 1.使用表设计器建立CHECK约束 2.使用SQL语句建立CHECK约束

6.2.4

DEFAULT定义

在向数据表中插入数据时,一行数据中的每列均必须有值, 即使该值是NULL。有可能会发生这样的情况,必须向表 中加载一行数据但不知道某一列的值,或者该值尚不存 在。如果在这种情况下,列允许为空值,那么就可以为 行加载空值。但是有时候不希望有为空的列,就可以为 该列定义DEFAULT定义。例如,通常为数值列指定零作 为默认值,为字符串列指定“N/A”作为默认值。 1.使用表设计器建立DEFAULT约束 2.使用SQL语句建立DEFAULT约束

6.2.5

允许空值

列的空值约束定义了表中数据行的特定列是否可以指定为空 值。空值(NULL)不同于零(0)、空白或长度为零的 字符串(如""),在一般情况下,如果在输入数据的时 候不输入该列的值,则表示为空值。因此,出现NULL通 常表示值未知或未定义。例如,在AdventureWorks数据 库的Production.Product表的SellEndDate列中的空值,不 是表示商品没有销售结束日期,而是表示该日期未知或 尚为设置。 指定某一列不允许空值有助于维护数据的完整性,因为这样 可以确保行中的列永远包含数据。如果不允许空值,用 户向表中输入数据时必须在列中输入一个值,否则数据 库将不接收该表行。在通常情况下,建议避免允许空值 ,因为空值会使查询和更新变得复杂,使用户在操作数 据的时候变得更加困难。

6.2.6

FOREIGN KEY约束

FOREIGN KEY约束(外键约束)是用于建立和加强两个表 数据之间的链接关系的一列或多列。当创建或修改表时 可通过定义FOREIGN KEY约束来创建外键。在外键引用 中,当一个表的列被引用作为另一个表的主键值的列时 ,就在两表之间创建了链接。这个列就成为第二个表的 外键。 FOREIGN KEY约束并不仅仅可以与另一表的PRIMARY KEY约束相链接,它还可以定义为引用另一表的 UNIQUE约束。FOREIGN KEY约束可以包含空值,但 是,如果任何组合FOREIGN KEY约束的列包含空值, 则将跳过组成FOREIGN KEY约束的所有值的验证。 1.使用SQL Server Management Studio建立FOREIGN KEY约束 2.使用SQL语句建立FOREIGN KEY约束

6.3

规则

规则是一个向后兼容的功能,用于执行一些与CHECK约束 相同的功能。CHECK约束是用来限制列值的首选标准方 法。CHECK约束比规则更简明,一个列只能应用一个规 则,但是却可以应用多个CHECK约束。CHECK约束作 为CREATE TABLE语句的一部分进行指定,而规则以单 独的对象创建,然后绑定到列上。SQL Server 2005采用 CREATE RULE命令来创建一个规则,其语法格式如下 。 CREATE RULE [schema_name .] rule_name As condition_expression [;]

6.4

关系图

关系图(又称图表)是SQL Server 2005中一类特殊的数据 库对象,它提供给用户直观地管理数据库表的方法。通 过关系图,用户可以直观地创建、编辑数据库表之间的 关系,也可以编辑表及其列的属性。

6.5

数据完整性Transact-SQL实例部分

【实例6-1】:在Practice_JWGL数据库中,创建2个表 Stu_info(学生信息)和Score_info(成绩表)。其中, 学生信息表中学号为主键,其他信息都不允许为空,通 过学号与成绩表形成一个一对多的关系;成绩表中的成 绩的默认值为0,但必须在0到100之间(成绩>=0 and 成 绩<=100)。

6.6

小结

数据库完整性设计是数据库管理和开发人员需要学习和掌握 的一个非常重要的内容,它是维护数据库中数据一致性 的重要机制。本章在了解数据库中数据完整性基础知识 的基础上,介绍了在SQL Server 2005中实现数据完整性 的两种机制:约束与规则,其中约束更为通用,然后介 绍了SQL Server 2005数据库中的一个数据库对象——关 系图,它是实现FOREIGN KEY约束的另一个选择,最后向 读者展示如何用Transact-SQ语句来创建、使用和删除常 见约束和规则。 下一章将学习SQL Server 2005安全与权限管理,主要包括 SQL Server 2005的安全性机制以及对登录和用户、权限 管理、角色管理和其他安全性的管理。

6.7

习题

1.什么是数据完整性?它在数据库设计中的意义何在? 2.数据完整性一般分为哪几类?各有什么特点? 3.怎样来实现“允许空值”?设置“允许空值”时应注意 哪些问题? 4.什么是关系图?如何创建关系图? 5.结合6.5中的实例,上机实现有关数据完整性的操作。

第7章

SQL Server 2005安全与权限

数据库安全是关系数据库中非常重要的一个方面,也是每个 数据库管理员都必须认真考虑的问题。SQL Server 2005 为维护数据库系统的安全性提供了完善的管理机制和简 单而丰富的操作方法。在实际应用中,用户可以根据系 统对安全性的不同需求,采用合适的方式来完成数据库 系统安全体系的设计。本章主要包含以下知识点。 ? SQL Server 2005的安全性机制 ? SQL Server 2005的登录和用户 ? SQL Server 2005的权限管理 ? SQL Server 2005的角色管理 ? SQL Server 2005其他安全性管理

7.1

SQL Server 2005的安全性机制

SQL Server 2005采用分层机制来进 行权限管理,即在每一层都有相 应的安全性机制。SQL Server 2005通过管理这种分层的安全性 机制,保证数据库安全使用。 SQL Server 2005的安全性管理分 为操作系统、SQL Server和数据 库3个等级,详细的权限层次和 安全机制如图7-1所示。

7.1.1

操作系统级的安全性

在用户使用客户端计算机通过网络实现对SQL Server 2005 服务器的访问时,首先要获得计算机操作系统的使用权 限。 一般来说,在能够实现网络互联的前提下,用户没有必要向 运行SQL Server 2005服务器的主机进行登录,除非SQL Server 2005服务器就运行在本地计算机上。SQL Server 2005可以直接访问网络端口,所以可以实现对Windows NT安全体系以外的服务器及其数据库的访问。 操作系统安全性是操作系统管理员或网络管理员的任务。由 于SQL Server 2005采用了集成Windows NT网络安全性的 机制,所以既提高了操作系统的安全性,又提高了管理 数据库系统安全性的灵活性。但是也加大了管理数据库 系统安全性的难度。

7.1.2

SQL Server级的安全性

SQL Server服务器级的安全性是建立在控制服务器登录账户 和密码的基础上的。SQL Server 2005采用了标准SQL Server登录和集成Windows NT登录两种方式。无论使用 哪种登录方式,用户在登录时提供的登录账户和密码, 决定了用户能否获得SQL Server 2005的访问权,以及在 获得访问权后,用户在访问SQL Server 2005进程时可以 拥有的权利。 管理和设计合理的登录方式是SQL Server 2005管理员DBA 的重要任务,是SQL Server 2005安全体系中,DBA可以 发挥主动性的第一道防线。

7.1.3

数据库级的安全性

在用户通过SQL Server服务器的安全性检查后,将直接面对不同 的数据库入口。这是用户将接受的第三次安全性检验。 在建立用户的登录账户信息时,SQL Server 2005会提示用户选 择默认的数据库。以后用户每次连接上SQL Server 2005服务 器后,都会自动连接到默认的数据库上。对任何用户来说, master数据库总是打开的,如果在设置登录账户时没有指定默 认的数据库,则用户的权限将局限在master数据库以内。 在默认的情况下,只有数据库的拥有者才可以访问该数据库的对 象,数据库的拥有者可以分配访问权限给别的用户,以便让别 的用户也拥有对该数据库的访问权限,在SQL Server 2005中 并不是所有权限都可以转让和分配的。

7.2

SQL Server 2005的登录和用户

用于连接到SQL Server 2005服务器的账户都称为SQL Server的登录。用户是为特定数据库定义的。要创建用户 ,必须已经定义了该用户的登录,用户ID同登录类似, 但是它的名称不需要与登录相同。 用户可以防止数据被未授权的用户故意或无意地修改。SQL Server 2005为每一个用户分配了唯一的用户名和密码, 可以为不同账号的用户授予不同的安全级别。

7.2.1

登录的身份模式及其设置

如果要登录到一个SQL Server 2005服务器的实例,那么在 这个实例中必须有一个登录名与之相对应,这个登录名 可以是如下两种类型。 ? Windows身份验证。 ? SQL Server身份验证。

7.2.2

使用SQL Server Management Studio 创建登录

登录属于SQL Server 2005服务器级的安全策略,要连接到 数据库,首先要存在一个合法的登录。在SQL Server Management Studio工具中创建一个名为“JWGL”的登 录,采用“SQL Server身份验证”模式,并默认指向 “Practice_JWGL”数据库。

7.2.3

使用SQL Server Management Studio 创建用户

用户是SQL Server 2005数据库级的安全策略,在为数据库 创建新的用户前,必须存在一个有效的登录。使用SQL Server Management Studio工具在“Practice_JWGL”数 据库中,创建一个“JWGL”登录下的“JWGL_1”用户, 并且该用户只具有只读权限。

7.2.4

使用Transact-SQL语句创建登录和用 户

除了使用SQL Server Management Studio工具来创建登录和 用户外,还可以使用Transact-SQL语句来创建登录和用 户。 1.使用Transact-SQL语句来创建登录 2.使用Transact-SQL语句来创建用户 3.使用Transact-SQL语句来创建登录和用户实例

7.3

SQL Server 2005的权限管理

权限用于控制对数据库对象的访问,以及指定用户对数据库 可以执行的操作。用户可以设置服务器和数据库的权限 。服务器权限允许数据库管理员执行管理任务,数据库 权限用于控制对数据库对象的访问和语句执行。

7.3.1

服务器权限

服务器权限允许数据库管理员执行管理任务。这些权限定义 在固定服务器角色(fixed server roles)中。这些固定服 务器角色可以分配给登录,但是不能修改。一般只把服 务器权限授予数据库管理员(DBA),因为他不需要修 改或者授权给别的用户登录。在下一节的角色管理中, 将详细地介绍服务器的相关权限和配置。

7.3.2

数据库对象权限

数据库对象权限是授予用户以允许他们访问数据库中对象的 一类权限,对象权限对于使用SQL语句访问表或视图是 必须的。

7.3.3

数据库权限

对象权限使用户能够访问存在于数据库中的对象,除了数据 库对象权限外,还可以给用户分配数据库权限。SQL Server 2005对数据库权限进行了扩充,增加了许多新的 权限,这些数据库权限除了授权用户可以创建数据库对 象和进行数据库备份外,还增加了一些更改数据库对象 的权限。

7.4

SQL Server 2005的角色管理

角色用来简化将很多权限分配给很多用户这一复杂任务的管 理。角色允许用户分组接受同样的数据库权限,而不是 单独给每一个用户分配这些权限。用户可以使用系统自 带的角色,也可以创建一个代表一组用户使用的角色, 然后把这个角色分配给这个工作组的用户。 一般情况下,角色是为特定的工作组或者任务分类而设置的 ,新用户可以根据自己所执行的任务成为一个或者多个 角色的成员。当然,用户可以不必是任何角色的成员, 也可以为用户分配个人权限。

7.4.1

服务器角色

在SQL Server 2005安装时就创建了在服务器级别上应用的大量预 定义角色,每个角色对应着相应的管理权限。这些服务器角色用于 授权给数据库管理员(DBA),拥有某种或者某些角色的DBA就 会获得与相应角色对应的服务器管理权限。这些角色和相应的权限 如表7-1所示。
服务器角色 bulkadmin 对应的服务器级权限 运行BULK INSERT语句。

dbcreator
diskadmin processadmin securityadmin serveradmin setupadmin sysadmin

可以创建、更改、删除和还原任何数据库。
用于管理磁盘文件。 可以终止SQL Server实例中运行的进程。 管理登录名及其属性。它们可以是GRANT、DENY和REVOKE服务器级权限。也可以是 GRANT、DENY和REVOKE数据库级权限。另外,它们可以重置SQL Server登录名的密码。 可以更改服务器范围的配置选项和关闭服务器。 可以添加和删除链接服务器,并且也可以执行某些系统存储过程。 可以在服务器中执行任何活动。默认情况下,Windows BUILTIN\Administrators组(本地管理员 组)的所有成员都是sysadmin固定服务器角色的成员。

7.4.2

数据库角色

在SQL Server 2005安装时,数据库级别上也有一些预定义的角色 ,在创建每个数据库时都会添加这些角色到新创建的数据库中, 每个角色对应着相应的权限。这些数据库角色用于授权给数据库 用户,拥有某种或者某些角色的用户会获得相应角色对应的权限 。这些角色和相应的权限如表7-2所示。
数据库角色 db_accessadmin db_backupoperator 对应的数据库级权限 可以为Windows登录账户、Windows组和SQL Server登录账户添加或删除访问权 限。 可以备份该数据库。

db_datareader
db_datawriter db_ddladmin db_denydatareader db_denydatawriter

可以读取所有用户表中的所有数据。
可以在所有用户表中添加、删除或更改数据。 可以在数据库中运行任何数据定义语言(DDL)命令。 不能读取数据库内用户表中的任何数据。 不能添加、修改或删除数据库内用户表中的任何数据。

db_owner
db_securityadmin

可以执行数据库的所有配置和维护活动。包括删除数据库。
可以修改角色成员身份和管理权限。

7.4.3

应用程序角色

应用程序角色是一个数据库主体。它使应用程序能够用其自 身的、类似用户的特权来运行。使用应用程序角色,可 以只允许通过特定应用程序连接的用户访问特定数据。 与数据库角色不同的是,应用程序角色默认情况下不包 含任何成员,而且是非活动的。应用程序角色同样也使 用两种身份验证模式。应用程序角色可使用sp_setapprole 激活,但此过程需要密码。因为应用程序角色是数据库 级主体,所以它们只能通过其他数据库中为guest授予的 权限来访问这些数据库。因此,其他数据库中的应用程 序角色将无法访问任何已禁用guest的数据库。

7.5

SQL Server 2005其他安全性管理

SQL Server 2005的安全性管理,除了前面介绍的登录、用 户和角色机制外,还涉及密码策略、凭据、架构以及密 钥与证书等机制。本节将介绍这些安全性机制及其基本 管理操作。

7.5.1

使用密码策略

在Windows操作系统环境下运行SQL Server 2005时,可以 使用Windows密码策略机制。SQL Server 2005可以将 Windows中使用的复杂性策略、过期策略应用于SQL Server 2005内部使用的密码。 1.密码复杂性策略 2.密码过期 3.使用密码策略

7.5.2

管理凭据

在SQL Server 2005中,如果需要访问外部的资源,例如文 件系统中的文件、注册表或者运行外部应用程序,那么 可以为执行这个程序指定一个用户。在SQL Server 2005 中,可以使用凭据来完成这个工作。凭据是包含连接到 SQL Server 2005以外的资源时所需的身份验证信息(凭 据)的记录。 1.凭据的构成 2.创建凭据 3.使用sys.credentials目录视图 4.创建映射到凭据的登录名

7.5.3

用户架构分离

用户与架构分离是SQL Server 2005在安全体系中最重要的 改进。架构是SQL Server 2005数据库新的数据库对象。 1.理解架构 2.使用SQL Server Management Studio创建架构 3.使用CREATE SCHEMA语句创建架构

7.5.4

管理密钥与证书

SQL Server 2005提供了完善的加密体系,用户不仅可以对 数据库进行访问加密,也可以对数据列进行加密。下面 将要介绍SQL Server 2005的加密策略及机制,主要包括 密码系统架构、密钥的使用和证书的使用。 1.SQL Server 2005密码系统架构 2.使用密钥 3.使用证书

7.6

小结

数据库的安全与权限是保障数据库安全性的重要机制。SQL Server 2005为维护数据库提供了完善的保护措施。本章 介绍了如何根据不同需求来设计数据库的安全体系。读 者可以通过SQL Server 2005提供的安全机制、登录和用 户以及SQL Server 2005的权限与角色管理等几个方面来 对SQL Server 2005进行安全与权限的管理。 下一章将学习如何来监控SQL Server 2005状态,使得SQL Server 2005数据库服务器能能正常运行。主要包括查看 当前活动、使用系统性能监视器、使用SQL Server Profilter和使用数据库引擎优化顾问等知识。

7.7

习题

1.SQL Server 2005安全性管理分为哪几个等级?各有哪些 特点? 2.SQL Server 2005中登录、用户和角色之间的关系是什么 ? 3.简述在SQL Server 2005中创建登录与用户的几种方法。 4.除了登录、用户和角色机制外,SQL Server 2005还提供 了哪些安全性机制? 5.SQL Server 2005中涉及到的权限有哪些?它们各有什么 含义?

第8章

监控SQL Server 2005状态

监控SQL Server 2005数据库的运行状态,是数据库管理员 的一项重要工作。通过监控可以对数据库进行优化、发 现并修复错误。SQL Server 2005提供了丰富的工具来监 视和优化数据库的运行,主要包括Windows性能监视器 、SQL Server事件查看器、SQL Server Profilter和数据 库引擎优化顾问等。本章将介绍对这些工具的使用和一 般的管理方法,主要包含以下知识点。 ? 查看当前活动 ? 使用系统性能监视器 ? 使用SQL Server Profilter ? 使用数据库引擎优化顾问

8.1

查看当前活动

SQL Server 2005数据库运行时,根据运行业务的不同,运 行的任务也不同。用户可以通过不同的工具对不同的指 标进行观察。用户可以使用活动监视器,对当前的活动 进行查看。

8.1.1

使用活动监视器

SQL Server 2005数据库提供了专门的工具对数据库的活动 进行监控,这个工具称为“活动监视器”。使用“活动 监视器”可以获取与数据库引擎相关的用户连接状态及 其所保存的锁等有用信息。 1.打开“活动监视器” 2.查看当前进程的属性 3.查看某一个进程的详细信息

8.1.2

动态管理对象

动态管理视图和函数返回可用于监视SQL Server 2005数据 库服务器实例的运行状况、诊断故障以及优化性能的服 务器状态信息。用户可在Transact-SQL语句中引用动态 管理视图,也可使用动态管理视图名称在Transact-SQL 语句中引用动态管理函数。 1.动态管理对象的分类 2.动态管理视图和函数 3.使用动态管理视图的示例

8.2

使用系统性能监视器

系统性能监视器可以用于监视系统资源的使用率。它使用计 数器形式收集和查看服务器资源(如处理器和内存使用 的情况)和许多SQL Server 2005资源(如锁和事务)的 实时性能数据。

8.2.1

运行系统性能监视器

系统监视器使用远程过程调用从SQL Server 2005收集信息 。拥有运行系统监视器的Windows权限的任何用户都可 以使用系统监视器来监视SQL Server 2005。与所有性能 监视工具一样,使用系统监视器监视SQL Server 2005时 ,性能方面会受到一些影响。特定实例中的实际影响取 决于硬件平台、计数器数量以及所选更新间隔。但是, 将系统监视器与SQL Server 2005集成可以尽量减少对性 能的影响。 1.启动“系统性能监视器” 2.系统监视器的功能

8.2.2

SQL Server 2005性能对象

SQL Server 2005数据库提供了一组针对性能的数据对象, 供用户监视SQL Server 2005时使用。当监视SQL Server 2005和Windows操作系统以调查与性能有关的问题时, 请主要关注3个主要方面:磁盘活动、处理器使用率和内 存使用量。这些性能对象在系统的“性能监视器”工具 的“添加计数器”对话框的“性能对象”列表中可以找 到。

8.2.3

监控SQL Server 2005的关键点

下面列举监控SQL Server 2005数据库的关键点,包括SQL Server 2005数据库的重要指标参数。 1.监视磁盘I/O 2.隔离SQL Server产生的磁盘活动 3.监视CPU 4.监视内存

8.3

使用SQL Server Profilter

SQL Server Profiler(事件探查器)是SQL跟踪的图形用户 界面,用于监视SQL Server 2005数据库引擎或SQL Server 2005 Analysis Services(分析服务)的实例。用户 可以捕获有关每个事件的数据,并将其保存到文件或表 中供以后分析。例如,可以对生产环境进行监视,了解 哪些存储过程由于执行速度太慢影响了性能。

8.3.1

SQL Server Profilter简介

SQL Server Profiler可显示SQL Server 2005如何在内部解析 查询。这就使管理员能准确查看提交到服务器的 Transact-SQL语句,以及服务器是如何访问数据库或多 维数据集以返回结果集的。使用SQL Server Profiler可以 执行下列操作。 ? 创建基于可重用模板的跟踪。 ? 当跟踪运行时监视跟踪结果。 ? 将跟踪结果存储在表中。 ? 根据需要启动、停止、暂停和修改跟踪结果。 ? 重播跟踪结果。

8.3.2

创建跟踪

用户可以使用SQL Server Profiler工具创建跟踪。

8.3.3

设置全局跟踪选项

用户可以设置应用于SQL Server Profiler的全局选项。

8.3.4

指定跟踪文件的事件和数据列

用户可以使用SQL Server Profiler指定跟踪的事件类和数据 列。

8.3.5

将跟踪结果保存到表

用户可以使用SQL Server Profiler将跟踪结果保存到数据库 表。

8.3.6

修改筛选器

为了限制收集的事件数能够减少跟踪对性能的影响,用户可 以通过将筛选器添加到包含跟踪定义的跟踪模板,来限 制跟踪所收集的事件数。同样用户如果已设置了跟踪模 板的筛选器,也可以对该筛选器进行编辑。

8.4

使用数据库引擎优化顾问

数据库引擎优化顾问是SQL Server 2005数据库为用户提供 的新工具,使用该工具可以优化数据库、提高查询处理 的性能。数据库引擎优化顾问检查指定数据库中处理查 询的方式,然后建议如何通过修改物理设计结构(如索 引、索引视图和分区)来改善查询处理性能。

8.4.1

启动数据库引擎优化顾问

启动数据库引擎优化顾问。

8.4.2

设置工具选项和布局

在打开的“数据库引擎优化顾问”窗口中,明显地分为左右 2个主窗格。左窗格为“会话监视器”,包含所有进行操 作的会话;右窗格包含“常规”和“优化选项”选项卡 。一般情况下,在打开数据库引擎优化顾问时,在左侧 的“会话监视器”窗格顶部将会显示一个新会话。用户 可以在右窗格的“会话名称”中对此进行命名。用户可 以对“数据库引擎优化顾问”窗口的选项和布局进行更 改。

8.4.3

使用数据库引擎优化顾问的示例

例8-3:使用数据库引擎优化顾问,对Transact-SQL脚本文 件“MyScript.sql”进行优化,并生成建议。

8.5

小结

监控技术是保障数据库能正常优质工作的特殊机制,它能及 时有效地观察数据库的运行状态,以便让数据库更好地 运行。本章详细介绍了SQL Server 2005提供的监控工具 及其一般使用方法。通过查看当前活动,使用性能监视 器和SQL Server Profiler以及数据库引擎优化顾问等工具 ,读者可以对SQL Server 2005数据库进行有效监控与优 化,以保障SQL Server 2005数据库的正常优质地运行。 下一章将学习SQL Server 2005的灾难恢复技术,使得SQL Server 2005数据库系统在灾难发生时,能够及时地恢复 数据,以避免或减少宕机或者数据丢失所带来的损失。

8.6

习题

1.SQL Server 2005提供的监控工具有哪些?各有什么具体 作用? 2.SQL Server 2005提供了哪些动态管理视图及函数?它们 分别有什么功能? 3.系统监视器有什么功能? 4.使用SQL Server Profiler可执行哪些基本操作? 5.上机使用数据库引擎优化顾问对Transact-SQL脚本文件 进行优化,并生成建议操作。

第9章

SQL Server 2005的灾难恢复

所谓灾难恢复,就是在灾难发生的时候,能够及时地恢复数据, 以避免或减少宕机或者数据丢失所带来的损失。SQL Server 2005提供了高性能的备份和还原功能,可以很好地保护存储在 SQL Server 2005数据库中的关键数据。本章将详细介绍如何在 SQL Server 2005中,通过各种备份与还原技术实现数据库的灾 难恢复,主要包含以下知识点。 ? 数据库备份的基础知识; ? 数据库恢复模式; ? 数据库备份策略; ? 执行数据库备份; ? 执行数据库还原; ? 用户数据库的灾难恢复; ? master数据库的灾难恢复; ? 数据库快照。

9.1

数据库备份基础知识

SQL Server 2005数据库备份的功能十分强大,使用起来也 非常简便。但由于备份数据库涉及到数据库系统的可靠 性、数据的完整性和安全性,因此要求备份过程严谨有 序。本节首先介绍一下SQL Server 2005数据库备份的相 关概念,以帮助用户更好地理解和实施数据库的备份操 作。

9.1.1

基本概念

备份是从数据库中保存数据和日志,以备将来使用。在备份 的过程中,数据从数据库复制并保存到另外一个位置。备 份操作可以在SQL Server 2005数据库正常运行时进行。 恢复操作是使相关数据库管理系统不发生故障,并恢复事务 的能力。由于数据库的事务完成后并不立即把对数据库的 修改写入数据库,即写数据存在一定的磁盘延迟,如果发 生系统故障,数据库可能会崩溃。要维护数据库的完整性 ,SQL Server 2005将所有的事务都保存在日志文件中。在 发生故障后,服务器可以通过恢复操作使事务日志前滚已 经提交但是还没有写入磁盘的事务,使事务日志回滚还没 有提交的事务。使用这种方式可以保证数据的一致性和有 效性。

9.1.2

备份数据库的目的

SQL Server 2005数据库中存放的是企业最为重要的内容, 它关系到企业业务的正常运转,并存放着企业的关键业 务数据。而这些所有数据都是存放在计算机上的,即使 是最可靠的硬件和软件,也会出现系统故障或者产品故 障。所以,应该在意外发生之前作好充分的准备工作, 以便在意外发生之后有相应的措施能快速地恢复数据库 的运行,并使丢失的数据量减少到最小。潜在的可能造 成数据损失的因素有很多,主要有以下几类。 ? 硬件故障。 ? 用户的错误操作。 ? 服务器的彻底崩溃。 ? 自然灾难。

9.1.3

备份数据库的设备

SQL Serve 2005数据库备份的设备类型包括磁盘备份设备、 磁带备份设备和命名管道备份设备。 1.磁盘备份设备 2.磁带备份设备 3.命名管道备份设备

9.1.4

物理和逻辑设备

SQL Serve 2005数据库引擎通过物理设备名称和逻辑设备名 称来识别备份设备。 物理备份设备是通过操作系统使用的路径名称来识别备份设 备的,如D:\Practice_JWGL\*.bak。 逻辑备份设备是用户给物理设备的一个别名,逻辑设备的名 称保存在SQL Serve 2005数据库的系统表中,逻辑设备的 优点是可以简单地使用逻辑设备名称而不用给出复杂的 物理设备路径。例如,使用逻辑备份设备BK_JWGL,而 不用给出复杂的物理设备所在的路径。另外,使用逻辑 设备也便于用户管理备份信息。

9.2

数据库恢复模式

SQL Server 2005数据库中的事务日志是备份和恢复的基础 ,因为它记录了数据操作的步骤和过程。事务日志的记 录方式也决定了备份和恢复的范围和程度。而决定事务 日志记录方式的属性是数据库的“恢复模式”属性。

9.2.1

恢复模式的分类

“恢复模式”是SQL Server 2005数据库运行时,记录事务日 志的模式。它控制事务记录在日志中的方式、事务日志 是否需要备份以及允许的还原操作。实际上,“恢复模 式”不仅决定了恢复的过程,还决定了备份的行为。它 是SQL Server 2005数据库的一个重要属性。它可以理解 为SQL Server 2005数据库备份和恢复的方案,它约定了 备份和恢复之间的关系。 SQL Server 2005数据库的“恢复模式”包含完整恢复模式 、大容量日志恢复模式和简单恢复模式3种类型。通常, 数据库使用完整恢复模式或简单恢复模式。 1.完整恢复模式 2.大容量日志恢复模式 3.简单恢复模式

9.2.2

选择恢复模式

每种恢复模式都与业务需求、性能、备份设备和数据重要性 相关。因此,在选择恢复模式的时候,应该权衡以下因 素。 ? 数据库性能。 ? 数据丢失的容忍程度。 ? 事务日志存储空间需求。 ? 备份好恢复的易操作性。

9.2.3

更改数据库恢复模式

当SQL Server 2005数据库被创建时,它拥有与model系统数 据库一样的恢复模式。用户可以通过SQL Server Management Studio工具或ALTER DATABASE语句来更 改数据库的恢复模式。 1.使用SQL Server Management Studio查看或更改数据库 的恢复模式 2.使用Transact-SQL语句更改数据库的恢复模式

9.3

数据库备份策略

SQL Server 2005允许用户根据应用业务需求和用户硬件设 备条件选择备份方式,在满足业务需求的条件下方便用 户备份。本节将向读者介绍SQL Server 2005数据库备份 的类型以及策略

9.3.1

备份的类型

SQL Server 2005数据库提供了以下多种备份类型,如表9-2 所示。其中完整备份、差异备份、以及事务日志备份都 是用户经常使用的备份方式。

9.3.2

理解备份策略

备份策略是用户根据数据库运行的业务特点,制定的备份类 型的组合。例如对一般的事务性数据库,使用“完整备 份”加“差异备份”类型的组合,当然还要选择适当的 “恢复模式”。下面提供了几种参考策略,主要包括“ 完全数据库备份策略”、“数据库和事务日志备份策略 ”、“差异备份策略”和“文件或文件组备份策略”。 1.完全数据库备份策略 2.数据库和事务日志备份策略 3.差异备份策略 4.文件或文件组备份策略

9.4

执行数据库备份

如果希望在灾难发生的时候,将SQL Server 2005数据库恢 复到可以接受的状态,那么就需要在灾难发生之前进行 一些准备工作,这里的准备工作主要指的是数据库的备 份。也就是说,需要经常对SQL Server 2005数据库进行 备份,以保证拥有数据库的可用版本,从而在SQL Server 2005数据库发生灾难的时候,可以从备份那里及 时得到恢复。 本节将主要介绍几种常用的SQL Server 2005数据库的备份 类型,包括完整备份、差异备份、日志备份以及文件和 文件组备份等。

9.4.1

完整备份

完整备份将备份整个SQL Server 2005数据库,包括事务日 志部分。进行数据库的完整备份后,SQL Server 2005数 据库的所有内容将包含在备份文件中,所以在恢复时可 以恢复所有的数据库状态。用户可以通过SQL Server Management Studio工具或BACKUP DATABASE语句来 完成数据库的完整备份。

9.4.2

差异备份

在数据库的完整备份中,数据库中的所有内容都被备份到备 份文件中。如果数据库的容量非常大,那么备份说需要 的时间将会很长,这将影响到数据库的正常使用。而完 整差异备份刚好解决了这个问题,因为差异备份仅记录 自上次完整备份后更改过的数据。因此,它比数据库完 整备份要小,备份时间也更短,可以简化频繁的备份操 作,减少备份数据库时所占用的系统资源。

9.4.3

事务日志备份

事务日志包含创建最后一个备份之后对数据库进行的更改。 因此,在进行事务日志备份前,先要进行一次完整的数 据库备份才可以。如果要进行事务日志备份,要求数据 库的恢复模式必须是完整恢复模式或大容量日志恢复模 式。在简单恢复模式下是不能进行数据库的备份的,这 是因为在简单恢复模式中,数据库的日志记录是不完整 的。

9.4.4

尾日志备份

通过前面的几种备份方式,可以手动或自动地在指定的时间 点进行备份操作。但是在发生灾难后,如果希望将数据 恢复到灾难发生的时间点的状态,就需要拥有最后一次 数据库备份与灾难发生之间的数据变化,这是就需要通 过尾日志备份来实现。

9.4.5

文件和文件组备份

文件和文件组备份指在进行数据库备份时,只备份单独的一 个或几个数据文件或文件组,而不是备份整个数据库。 与完整数据库备份相比较,文件备份的主要优点是对大 型的数据库备份和还原的速度提升很多,主要的缺点是 管理起来比较复制。如果某个损坏的文件未备份,那么 媒体介质故障可能导致无法恢复整个数据库。因此,必 须维护完整的文件备份,包括完整恢复模式的文件备份 和日志备份。

9.4.6

备份的验证与校验

在备份完成后,可以通过RESTORE VERIFYONLY语句来 对备份证件进行验证。验证备份可以检查备份在物理上 是否完好无损,以确保备份中的所有文件都是可读、可 还原的,并且在需要使用它时可以还原备份。验证备份 时,并不会验证备份中数据的结构,而只是验证其在物 理上的完整性。但是,如果备份使用了WITH CHECKSUM选项来创建,则可以很好地表明备份中数据 的可靠性。

9.5

执行数据库还原

在数据库正常运行的过程中,一般都是进行数据库的备份操 作,从而进行灾难性恢复的准备工作。如果数据库系统 遇到了不可避免的灾难,那么应当及时地进行数据库的 恢复与还原操作。本节将对照上一节介绍的几种常用的 数据库备份的类型进行相应的还原操作。

9.5.1

完整的数据库还原

完整的数据库还原是完整数据库备份的逆过程,是数据库还 原中最常见的一种方式。在进行完整的数据库还原之前 ,确保备份设备里至少有一个完整的数据库备份。使用 SQL Server Management Studio工具,从“BK_JWGL” 备份设备中,来完整的还原“Practice_JWGL”数据库。

9.5.2

差异的数据库还原

差异备份的数据库还原与完整的数据库还原类似,但是需要 注意的是,差异的数据库还原需要按照备份的顺序来完 成。例如,先进行一个完整备份,然后再进行一个差异 备份,那么在还原的时候,也要先进行完整还原,再进 行差异还原。 在进行数据库的备份时,都会备份一定量的事务日志内容, 特别是最后一些没有提交的事务日志。前面的示例中, 选择“回滚未提交的事务”选项,也就是说将未提交的 事务舍弃。但是,如果希望进行一系列的还原动作,如 先进行完整还原,之后再进行差异还原,那么在进行完 整还原的时就不能选择上面的操作。因为这时未提交的 事务将会在后继的还原中进行处理。

9.5.3

事务日志还原

如果在备份时使用的是事务日志备份,那么在还原的时候就 可以使用事务日志备份来进行还原。要进行事务日志还 原,同样要先进行一个完整的数据库还原。因为事务日 志备份也是基于最近一次数据库的完整备份的。使用 SQL Server Management Studio工具,从“BK_JWGL” 备份设备中,利用事务日志备份来还原 “Practice_JWGL”数据库。

9.5.4

文件和文件组还原

如果在备份时使用的是文件和文件组备份,那么在还原的时 候就可以使用文件和文件组备份来进行还原。使用SQL Server Management Studio工具,从“BK_JWGL”备份 设备中,利用文件和文件组备份来还原 “Practice_JWGL”数据库。

9.5.5

页面还原

页面还原可以只还原一个页面的内容,也就是8KB的内容, 这样大大减少了恢复的时间。页面还原只适用于数据库 中某些页面损坏而造成数据库无法正常使用的情况,它 可以通过校验来检测已损坏的页,并进行页面级别的还 原。 页面还原用于修复各个损坏的页。如果设备上有大量此类页 ,则可能指示此设备有未解决的故障,可以将文件还原 到另外一个位置。还原的页必须恢复到与数据库一致的 状态。

9.5.6

段落还原

在SQL Server 2005中,可以通过称为“段落还原”的过程 分阶段恢复由多个文件组组成的数据库。段落还原可以 在任何恢复模式下进行,在完整恢复模式或大容量日志 恢复模式下比在简单恢复模式下更加灵活。段落还原方 案包括所在的3个还原阶段:数据复制、重做(前滚)日 志和撤销(回滚)日志。 作为SQL Server 2005中的新功能,段落还原提高了SQL Server 2000的部分还原能力。使用段落还原,可以在对 主文件组和某些辅助文件组进行初始的部分还原后,对 文件组进行还原。未还原的文件组被记为离线,不能对 其进行访问。不过,对于离线文件组,可以在以后通过 文件还原功能进行还原。为了使整个数据库能够在不同 时间分阶段还原,段落还原将维护标记,以保证数据库 最终的一致性。

9.6

用户数据库的灾难恢复

假如对“Practice_JWGL”数据库已进行过一次完整备份 和一次差异备份,分别位于逻辑备份设备“BK_JWGL” 中的位置1和位置2上。运行一段时间后,SQL Server 2005数据库服务器出现故障,导致“Practice_JWGL” 数据库中的数据文件被破坏,但是可以确定的是事务日 志文件尚完好。 此时灾难已经发生了,但是前面的备份只包含了最后一次差 异备份时的数据。而差异备份之后到灾难发生之时的所 有数据都遭到了破坏。那么,能否将 “Practice_JWGL”数据库恢复到发生灾难时的最新状 态?怎样才能恢复到最新状态呢? 在灾难发生的时候,没有破坏数据库的日志文件。那么就可 以从日志文件当中将事务日志备份处理,从而进行恢复 ,也就是前面讲到过的尾日志备份。

9.7

master数据库的灾难恢复

对于系统数据库来说,也要进行灾难恢复的准备,也即要进 行日常的备份。对于master数据库以外的其他数据库来 说,可以直接使用和用户数据库类似的方式进行备份和 还原操作,而master数据库的还原则与普通的用户数据 库还原不同(备份方式是一样的)。 如果master已损坏,而服务器实例正在运行,则可以通过还 原master的最近完整数据库备份(如果创建了一个备份 )轻松地修复已损坏的数据库。如果由于master数据库 被损坏而无法启动服务器实例,则必须重建master数据 库。重建master数据库将使所有的系统数据库恢复到其 原始状态。

9.8

数据库快照

数据库快照是一个只读的、静态的数据库视图。为用户提供 了一种机制,能够实现保存历史某一时间点的数据库。 它是SQL Server 2005的一项新技术,并且只有SQL Server 2005企业版才支持这种新技术。一个数据库可以 在同一个实例中同时存在数据库快照,每个数据库快照 与数据库创建快照时刻的数据保持一致。即数据库快照 的内容是不会变化的,永远记录创建快照时的所有数据 。

9.8.1

创建数据库快照的语法格式

使用Transact-SQL语句来创建数据库快照的语法格式如下 所示。 CREATE DATABASE database_snapshot_name ON ( NAME=logical_file_name, FILENAME=’os_file_name’ ) [ ,…n ] AS SNAPSHOT OF source_database_name [;]

9.8.2

创建数据库快照的示例

例如,为前面的“Practice_JWGL”数据库创建一个数据库 快照“Practice_JWGL_Snapshot”,其Transact-SQL语 句代码如下所示。

9.8.3

使用数据库快照实现灾难恢复

由于数据库快照可以永久记录数据库某一个时间点的数据状 态。因此,它可以用来恢复一部分数据库,特别是恢复 一些由于用户的误操作而丢失的数据。 利用前面创建的数据库快照“Practice_JWGL_Snapshot”, 恢复“Practice_JWGL”数据库,其Transact-SQL语句 代码如下所示。
--打开master数据库 USE master GO

--利用数据库快照恢复数据库 RESTORE DATABASE Practice_JWGL FROM DATABASE_SNAPSHOT='Practice_JWGL_Snapshot' GO

9.9

小结

无论对数据库应用开发人员还是数据库管理人员来说,灾难 恢复都是一项重要的工作。SQL Server 2005为用户提供 了高性能的备份和还原功能。本章先是向读者介绍了数 据库备份的基础知识,接着介绍了数据库的恢复模式、 备份策略和执行数据库备份与还原的方法,以及如何对 用户数据库和master数据库进行灾难恢复。最后,介绍 了SQL Server 2005数据库快照的定义及其使用方法。通 过本章的学习,读者会对SQL Server 2005数据库的灾难 性恢复有一个明确的认识,并且能根据实际需要对SQL Server 2005数据库进行各种形式的灾难性恢复。 第10章将学习SQL Server 2005提供的自动化管理任务,利 用这些自动化管理任务能够自动地完成预先定义好的活 动,从而简化管理员的工作,并且可以避免管理员的误 操作。

9.10

习题

1.什么是数据库备份?数据库备份的目的是什么? 2.SQL Server 2005数据库恢复有几种模式?它们分别在什 么情况下适用? 3.SQL Server 2005数据库的备份类型有哪几种?它们有何 异同? 4.如何执行SQL Server 2005数据库的还原方式有哪些?如 何执行还原? 5.什么是数据库快照?它有什么功能?

第10章

自动化管理任务

SQL Server 2005提供了多种自动化方式帮助用户管理数据库 ,主要包括SQL Server代理(Agent)、维护计划、作业 和警报等,它们统称为自动化管理任务。这些自动化管理 任务能够自动地完成预先定义好的活动,从而简化管理员 的工作,并且可以避免管理员的误操作。本章将详细介绍 如何利用这些自动化管理任务来实现对SQL Server 2005数 据库的自动化管理,主要包含以下知识点。 ? SQL Server代理 ? 维护计划 ? 作业 ? 警报 ? 操作员

10.1

SQL Server代理

SQL Server代理是SQL Server 2005数据库自动化管理任务 的核心,它提供了系统的自动化处理机制,与SQL Server 2005数据库引擎紧密集成,本节介绍SQL Server 代理的基本概念与常见操作。

10.1.1

SQL Server代理简介

SQL Server代理是指代替用户去做一系列的操作,可以将 SQL Server代理服务进程看作一个虚拟的用户,这个虚 拟用户可以自动地去完成一系列预先指定好的工作。 SQL Server代理实际上是一种Microsoft Windows服务,它 执行安排的管理任务,即“作业”。SQL Server代理将 大部分配置信息存储在msdb数据库的表中,并使用SQL Server 2005凭据对象来存储代理的身份验证信息。因此 ,SQL Server代理服务的启动依赖于SQL Server 2005数 据库引擎服务的启动。

10.1.2

SQL Server代理组件

SQL Server代理使用以下自动管理组件来定义要执行的任务 、执行任务的时间以及报告任务成功或失败的方式。 1.作业 2.计划 3.警报 4.操作员

10.1.3

配置SQL Server代理

SQL Server代理服务进程要在操作系统上运行时,和普通的 用户一样,需要以一定的身份去运行,这个身份是就服 务启动账户。 1.服务启动账户 2.验证必要的Windows权限

10.1.4

启动和停止SQL Server代理服务

SQL Server代理必须作为服务运行,以便自动化管理任务。 用户可以配置SQL Server代理服务,使其在操作系统启 动时自动启动,也可以在需要完成作业时手动启动。可 以停止或暂停SQL Server代理服务以挂起作业、操作员 通知和警报。 注意:默认情况下,Microsoft SQL Server 2005安装后SQL Server代理服务是禁用的。用户可以利用“SQL Server配 置管理器”来配置SQL Server代理服务的启动方式为“ 自动”模式,随操作系统启动而自动运行。其方法是在 图10-2中,选择“服务”选项卡,配置“启动模式”选项 为“自动”模式。 1.启动SQL Server代理服务 2.停止或重新启动SQL Server代理服务

10.1.5

SQL Server代理的安全性

SQL Server代理使数据库管理员能够在一个安全上下文中运 行每个作业步骤,这个安全上下文只具有执行该作业步 骤所需的权限,这是由SQL Server代理决定的。若要为 某个特定的作业步骤设置权限,可以创建一个具有所需 权限的代理,然后将该代理分配给该作业步骤。一个代 理可以指定给多个作业步骤。对于需要相同权限的作业 步骤,可以使用同一个代理。 1.SQL Server代理固定数据库角色 2.SQL Server代理子系统 3.创建代理账户

10.2

维护计划

维护计划用于创建自动运行的维护工作,用户可以通过维护 计划实现自动定期备份数据库、检查数据库可能出现错 误的一些特性等功能。用户可以通过维护计划向导设置 核心维护任务,从而确保数据库执行良好。事实上维护 计划向导通过创建一个或多个SQL Server代理作业,这 些代理作业将按照计划的间隔自动执行这些维护任务。

10.2.1

可以自动运行的维护计划

维护计划可以实现自动维护任务,SQL Server 2005数据库 实现的可以自动维护的任务主要包括以下种类。 ? 检查数据库完整性 ? 收缩数据库 ? 重新组织索引 ? 重新生成 ? 更新统计信息 ? 清除历史记录 ? 执行SQL Server代理作业 ? 备份数据库(完整) ? 备份数据库(差异) ? 备份数据库(事务日志)

10.2.2

使用向导创建维护计划

维护计划向导提供了一个友好的界面,来帮助用户设置核心 维护任务。它经常用于检查数据库完整性、压缩数据库 、重新组织索引、重新生成索引、更新统计信息、清除 历史记录、备份数据库等操作,从而确保数据库运行正 常。 维护计划向导可创建一个或多个SQL Server代理作业,代理 作业可对多服务器环境中的本地服务器或目标服务器执 行这些任务。可以按预订的时间间隔执行任务也可以按 需执行任务。

10.2.3

手工创建维护计划

尽管可以使用“维护计划向导”轻松地创建维护计划,但是 手动创建这些计划具有更大的灵活性。

10.3

作业

作业是一系列由SQL Server代理按顺序执行的指定操作。作 业包含一个或多个作业步骤,每个步骤都有自己的任务 。作业可以执行一系列活动,包括运行Transact-SQL脚 本、命令行应用程序、Microsoft ActiveX脚本、 Integration Services包、Analysis Services命令和查询或复 制任务。 作业可以运行重复任务或那些可计划的任务,并且可以通过 生成警报来自动通知用户作业状态,从而极大地简化了 SQL Server管理。可以手动运行作业,也可以将作业配 置为根据计划或响应警报来运行。

10.3.1

创建作业

用户可以使用SQL Server Management Studio工具或者 Transact-SQL语句代码来创建作业。 1.使用图形工具创建作业 2.创建其他用户的作业 3.使用存储过程创建SQL Server代理作业

10.3.2

创建作业步骤

作业步骤是作业对数据库或服务器执行的操作。每个作业必 须至少有一个作业步骤。作业步骤可以为可执行程序和 操作系统命令、Transact-SQL语句(包括存储过程和扩 展存储过程)、Microsoft ActiveX脚本、复制任务、 Analysis Services任务和Integration Services包等。 使用SQL Server Management Studio工具来创建作业步骤, 实现对“Practice_JWGL”数据库的完整备份。

10.3.3

创建作业计划

通过作业计划可以定义作业开始运行的条件。可以为任何类 型的作业建立计划,并且多个作业可以使用同一个作业 计划。制定完作业计划后,SQL Server代理可以根据计 划自动运行作业。 使用SQL Server Management Studio工具来创建作业计划, 定期地对“Practice_JWGL”数据库进行完整备份。

10.3.4

查看和修改作业

用户可以根据需要适时地查看作业及作业的运行情况,或者 修改作业的定义。 1.查看和修改作业 2.查看作业的活动 3.删除作业

10.3.5

运行作业

使用SQL Server Management Studio工具可以用来启动或禁 用作业,还可以手动开始或停止作业。 1.启动或禁用作业 2.手动开始或停止作业

10.3.6

查看作业历史日志

用户可以通过SQL Server Management Studio工具来查看作 业运行的历史信息,也可以调整作业日志记录的大小等 ,以确保作业维护的可用性。 1.查看作业历史记录 2.调整作业历史记录日志的大小 3.清除作业历史记录日志

10.4

报警

警报是SQL Server 2005数据库提供的一种对事件等信息进 行监测的机制。警报在系统事件与警报中定义的条件相 比较,符合条件时即触发报告。 事件由SQL Server生成并被输入到Windows应用程序日志中 。SQL Server代理读取应用程序日志,并将写入的事件 与定义的警报比较。当SQL Server代理找到匹配项时, 它将发出自动响应事件的警报。除了监视SQL Server事 件以外,SQL Server代理还监视性能条件和Windows Management Instrumentation(WMI)事件。

10.4.1

创建警报

若要定义警报,需要指定警报的名称、触发警报的事件或性 能条件和SQL Server代理响应事件或性能条件所执行的 操作。一个警报响应一种特定的事件。警报可以响应以 下的事件类型。 ? SQL Server事件。 ? SQL Server性能条件。 ? WMI事件。 事件类型决定了用于指定具体事件的参数。下面使用SQL Server Management Studio工具创建一个警报。当 “Practice_JWGL”数据库的数据文件的大小超过100M时 ,触发的SQL Server代理警报。

10.4.2

查看、修改和删除警报

用户可以使用SQL Server Management Studio工具来查看、 修改和删除警报,具体操作过程如下。 (1)打开SQL Server Management Studio并连接到数据库 引擎服务器。 (2)在“对象资源管理器”窗口中,展开“SQL Server代 理”|“警报”节点。 (3)右击“Alert_JWGL_1”警报,选择相应的菜单命令来 完成以下操作。 ? 启用或禁用该警报。 ? 查看和修改该警报定义(选择“属性”命令)。 ? 重命名该警报。 ? 删除该警报。

10.5

操作员

SQL Server代理能够通过操作员通知数据库用户。操作员是 在完成作业或者出现警报时,可以接受电子通知的人员 的别名。操作员主要包括操作员名称和联系信息。用户 可以在定义警报之前定义操作员,也可以在定义警报的 过程中定义操作员。

10.5.1

创建操作员

使用SQL Server Management Studio工具创建操作员,具体 操作过程如下。 (1)打开SQL Server Management Studio并连接到数据库 引擎服务器。 (2)在“对象资源管理器”窗口中,展开“SQL Server代 理”节点。 (3)右击“操作员”节点,选择“新建操作员”命令,打 开“新建操作员”对话框。默认打开“常规”选项页, 如图10-27所示。 (4)在“名称”文本框中,输入“Opt_JWGL_1”。 (5)若要定义通知操作员的方法,请根据需要选择以下的 “通知选项”。

10.5.2

为操作员分配警报

用户可以根据需要向操作员分配警报通知的种类,并查看历 史执行情况,具体操作过程如下。 (1)打开SQL Server Management Studio并连接到数据库 引擎服务器。 (2)在“对象资源管理器”窗口中,展开“SQL Server代 理”|“操作员”节点。 (3)右击“Opt_JWGL_1”操作员,选择“属性”命令,打 开“操作员属性”对话框。选择“通知”选项页,如图 10-28所示。 (4)在“按以下方式查看发送给此用户的通知”下。 (5)单击“确定”按钮,即可完成为操作员分配警报的操 作。

10.5.3

查看、修改或删除操作员

用户可以使用SQL Server Management Studio工具来查看、 修改和删除操作员,具体操作过程如下。 (1)打开SQL Server Management Studio并连接到数据库 引擎服务器。 (2)在“对象资源管理器”窗口中,展开“SQL Server代 理”|“操作员”节点。 (3)右击“Opt_JWGL_1”操作员,选择相应的菜单命令来 完成以下操作。

10.6

小结

数据库系统管理员,为了系统能安全稳定高效地运行,必须 要时常对数据库进行维护,优化管理,在数据库比较多 的情况下,维护工作会就非常繁重不堪。SQL Server 2005中提供的代理(Agent)就可以实现自动化管理,其 应用并不复杂,先定义好管理任务(作业)的内容,然 后指定执行该任务的时间或条件,由SQL SERVER2005 自动执行。除此之外,代理还可以自动完成警报、操作 员的工作。 下一章将学习SQL Server 2005高可用性的相关知识,以保 证在SQL Server 2005的数据库系统中提供几乎7×24小时 的不间断数据服务。

10.7

习题

1.如何利用SQL Server2005代理进行自动化管理? 2.叙述创建SQL Server2005代理账户的过程。 3.举例说明创建一维护计划的过程。 4.如何利用SQL Server Management Studio工具创建作业 ?并举例说明。 5.什么是SQL Server2005警报?在SQL Server2005中如何 创建警报? 6.SQL Server2005中操作员如何利用警报完成对数据库的 管理?

第11章

SQL Server 2005高可用性

随着信息技术的深入应用,企业有越来越多的关键性业务数据存 放在数据库系统之中。这些关键应用要求数据库系统必须能提 供持续和可靠的数据访问与管理机制。数据的高可用性就是要 在数据库系统中提供几乎7×24小时的可用性,也就是所谓的 提供不间断数据服务。SQL Server 2005为了提高服务器或数据 库的可用性而发布了几个高可用性解决方案,如故障转移群集 、数据库镜像、日志传送和复制等。本章将介绍这些高可用性 解决方案以及如何配置这些高可用性解决方案,主要包含以下 知识点。 ? 了解SQL Server 2005高可用性 ? 故障转移群集 ? 事务日志传送 ? 数据库镜像

11.1

了解SQL Server 2005高可用性

本节将介绍几个能提高SQL Server 2005服务器或数据库高 可用性的解决方案。通过这些高可用性解决方案,可以 减少硬件或软件故障造成的影响,保持应用程序的可用 性,尽可能地减少用户所感受到的停机时间。

11.1.1

SQL Server 2005高可用性技术

SQL Server 2005提供了多种技术方案来实现服务器或数据 库的高可用性。 1.故障转移群集 2.数据库镜像 3.日志传送 4.复制

11.1.2

选择高可用性解决方案

在SQL Server 2005提供的所有高可用性技术方案中,用户 可以根据企业数据库环境的需求和特点来选择并使用不 同的高可用性方案。在选择高可用性技术方案之前,应 当了解这些方案的优势和缺点,以便作出正确的选择。

11.2

故障转移群集

SQL Server 2005中的故障转移群集为整个SQL Server实例 提供高可用性支持。例如,可以将故障转移群集的一个 节点上的SQL Server实例配置为在发生硬件错误、操作 系统错误或计划升级时故障转移到此群集中的任何其他 节点。 故障转移群集是一个或多个节点(服务器)与两个或多个共 享磁盘的组合,即资源组。资源组(包括其网络名称) 和一个Internet协议(IP)地址组合在一起,构成了称为 “故障转移群集或故障转移群集实例”的群集应用程序 或群集服务器(也称为虚拟服务器)。

11.2.1

故障转移群集准备

若要安装SQL Server 2005故障转移群集,必须通过运行 SQL Server 2005的安装程序来创建并配置一个故障转移 群集实例。故障转移群集实例可以在参与故障转移群集 节点的一个或多个计算机上运行。参与节点的数量仅受 操作系统的限制。故障转移群集实例包括以下几项。 Microsoft群集服务(MSCS)群集组(也称为资源组)中的 一个或多个磁盘的组合。各资源组最多可包含一个SQL Server 2005实例。 故障转移群集实例的网络名称。 分配给故障转移群集实例的一个或多个IP地址。 一个包括SQL Server、SQL Server代理,以及全文搜索( FTS)服务在内的SQL Server 2005实例。

11.2.2

安装故障转移群集

若要安装SQL Server 2005故障转移群集,用户必须是本地 管理员,具有作为服务登录的权限以及在故障转移群集 的所有节点上作为操作系统的一部分进行操作的权限。

11.3

事务日志传送

在SQL Server 2005数据库引擎中,可以使用日志传送将事 务日志不间断地从一个数据库(主数据库)发送到另一 个数据库(辅助数据库)。不间断地备份主数据库中的 事务日志,然后将它们复制并还原到辅助数据库,这将 使辅助数据库与主数据库基本保持同步。目标服务器充 当备份服务器,并可以将查询处理从主服务器重新分配 到一个或多个只读的辅助服务器。日志传送可与使用完 整或大容量日志恢复模式的数据库一起使用。

11.3.1

了解日志传送

使用日志传送,可以自动将“主服务器”实例上“主数据库 ”内的事务日志备份发送到单独“辅助服务器”实例上 的一个或多个“辅助数据库”。事务日志备份分别应用 于每个辅助数据库。可选的第三个服务器实例(称为“ 监视服务器”)记录备份和还原操作的历史记录及状态 ,还可以在无法按计划执行这些操作时引发警报。日志 传送由以下3项操作组成。 ? 在主服务器实例中备份事务日志。 ? 将事务日志文件复制到辅助服务器实例。 ? 在辅助服务器实例中还原日志备份。

11.3.2

日志传送作业

日志传送涉及4项由专用SQL Server代理作业处理的作业。 这些作业包括备份作业、复制作业、还原作业和警报作 业。 1.备份作业 2.复制作业 3.还原作业 4.警报作业 5.典型日志传送的示例

11.3.3

配置日志传送

用户可以使用SQL Server Management Studio或手动运行一系列 存储过程配置日志传送。配置日志传送主要包括以下基本步骤 。 (1)选择作为主服务器、辅助服务器和可选的监视服务器的服 务器。 (2)最好在不属于日志传送配置的容错服务器上,为事务日志 备份创建文件共享。为了尽可能地提高主服务器的可用性, Microsoft建议最好将备份共享放在单独的主机上。 (3)选择主数据库的备份计划。 (4)为每个辅助服务器创建一个文件夹,事务日志备份文件将 会复制到其中。这些文件夹通常位于辅助服务器上。 (5)配置一个或多个辅助数据库。 (6)配置一个监视服务器(可选)。

11.3.4

故障转移到日志传送辅助服务器

如果主服务器实例失败或需要维护,则故障转移到日志传送 辅助服务器将十分有用。 通常,主数据库与辅助数据库不同步,因为主数据库在其最 新的备份作业后会继续更新。此外,在某些情况下,最 新的事务日志备份尚未复制到辅助服务器实例中,或者 某些已复制的日志备份可能尚未应用到辅助数据库中。 建议如有可能,首先将所有辅助数据库与主数据库同步 。

11.3.5

交换主服务器和辅助服务器的角色

故障转移到辅助服务器后,可以将辅助数据库配置为主数据 库。然后,就可以根据需要交换主数据库和辅助数据库 。 1.执行初始角色交换 2.交换角色

11.3.6

删除日志传送

用户若要删除“Practice_JWGL”数据库的日志传送,具体操 作过程如下。 (1)打开SQL Server Management Studio并连接到数据库引 擎服务器。 (2)在“对象资源管理器”窗口中,展开“数据库”节点。 (3)右击“Practice_JWGL”数据库,依次选择“任务”|“传 送事务日志”命令(用户也可选择“属性”命令),打开 “数据库属性”对话框,默认打开“事务日志传送”选项 页。 (4)清除“将此数据库启用为日志传送配置中的主数据库” 复选框。 (5)单击“确定”按钮,即可从此主数据库中删除日志传送 。

11.4

数据库镜像

数据库镜像是SQL Server 2005 SP1新增的功能,是用于提 高数据库可用性的主要软件解决方案。镜像是基于每个 数据库实现的,可以在单个数据库之间实现自动或手动 的故障转移。但是,它只适用于使用完整恢复模式的数 据库,简单恢复模式和大容量日志恢复模式不支持数据 库镜像。SQL Server Standard Edition和Enterprise Edition都支持数据库镜像。 数据库镜像大幅度地提高了以前使用SQL Server可能获得 的可用性级别,并为故障转移群集或日志传送提供了易 于管理的替代或补充方法。同步数据库镜像会话时,数 据库镜像提供了热备用服务器,可支持在已提交事务不 丢失数据的情况下进行快速故障转移。在一般的镜像会 话期间,如果生产服务器出现故障,客户端应用程序可 以通过重新连接到备用服务器来快速进行恢复。

11.4.1

了解数据库镜像

数据库镜像维护一个数据库的两个副本,这两个副本必须驻 留在不同的SQL Server 2005数据库引擎实例(服务器实 例)上。通常,这些服务器实例驻留在不同位置的计算 机上。在任何给定的时间,客户端当前都只能使用一个 数据库副本,此副本称为“主体数据库”。客户端对主 体数据库进行的更新被镜像到数据库的另一副本,该副 本称为“镜像数据库”。镜像数据库是将对主体数据库 执行的每个插入、更新或删除操作的事务日志应用到镜 像数据库。

11.4.2

数据库镜像运行模式

见证服务器主要是用来监视主体服务器和镜像服务器的。实 际上,它主要是用来实现自动的故障转移。因此,如果 没有见证服务器实例,就无法实现自动的故障转移。 通常,为了提高主体数据库和镜像数据库之间数据的同步速 度,可以采取一种异步复制数据的方式来同步数据。也 就是说,可能会出现主体数据库与镜像数据库之间数据 不一致的情况。不同的镜像运行模式提供了不同级别的 可用性、数据保护和性能。

11.4.3

数据库镜像角色

在数据库镜像中可能出现3种角色,它们分别是主体、镜像 和见证。 主体指主体服务器。其中存放主体数据库,也就是可以正常 使用的数据库。 镜像指镜像服务器。其中存放镜像数据库,它与主体数据库 保持数据同步关系,在主体数据库不能访问的时候,它 可以替代主体数据库的角色。 见证指见证服务器。它和前面两个角色一样,都需要安装单 独的SQL Server 2005实例,但是与这两个伙伴不同的是 ,见证服务器并不能用于数据库。它通过验证主体服务 器是否已启用并运行来仅支持自动故障转移。

11.4.4

配置数据库镜像

用户可以使用SQL Server Management Studio工具来配置数 据库镜像。要进行数据库镜像的配置,首先要保证主体 数据库和镜像数据库一致。因此,可以采用数据库备份 还原的方式来实现。 首先,要对目标数据库进行备份。然后,在镜像服务器实例 上还原该数据库,并且保持数据库处于还原状态(还原 的时,在“还原数据库”对话框的“选项”选项页中, 选择“不对数据库执行任何操作,不回滚未提交事务” 选项)。如图11-14所示。

11.4.5

监控数据库镜像

可以在镜像会话期间监视镜像数据库,以验证数据是否流动 以及流动的情况。若要对服务器实例上的一个或多个镜 像数据库进行监视设置和管理,可以使用数据库镜像监 视器或sp_dbmmonitor系统存储过程。通过右击正在镜像 的“Practice_JWGL”数据库,依次选择“任务”|“启动 数据库镜像监视器”命令,打开“数据库镜像监视器” 对话框的“状态”选项卡,如图11-26所示。

11.4.6

管理数据库镜像

用户还可以对正在运行的数据库镜像进行有效管理,例如暂 停、恢复和取消镜像以及故障转移等。使用SQL Server Management Studio工具来对数据库镜像进行管理,具体 操作过程如下。 (1)打开SQL Server Management Studio并连接到数据库 引擎服务器。 (2)在“对象资源管理器”窗口中,展开“数据库”节点 。 (3)右击“Practice_JWGL”数据库,依次选择“任务”|“ 镜像”命令,打开“数据库属性”对话框的“镜像”选 项页。

11.5

小结

SQL Server 2005从多个层面提供了对高可用性的强大支持 ,并且与其前一版本SQL Server 2000相比有了长足的进 步。本章就故障转移群集、数据库镜像、日志传送三个 方面作了详细介绍,叙述了它们的工作机理,实现与配 置过程。 下一章将学习SQL Server 2005提供的复制技术,将数据和 数据库对象从一个数据库复制和分发到另一个数据库, 然后在数据库间进行同步,以维持一致性。通过使用 SQL Server 2005复制,可以轻松地实现数据库的高可用 性和分布作业处理等高级特性。

11.6

习题

1.SQL Server2005通过哪些技术实现数据库的高可用性? 2.如何安装故障转移群集? 3.如何配置日志传送?并描述日志传送过程。 4.如何配置数据库镜像?

第12章

SQL Server 2005复制

复制是SQL Server 2005数据库提供的一组技术,它将数据 和数据库对象从一个数据库复制和分发到另一个数据库 ,然后在数据库间进行同步,以维持一致性。通过使用 SQL Server 2005复制,可以轻松地实现数据库的高可用 性和分布作业处理等高级特性。本章将介绍SQL Server 2005中几种主要的复制类型,并通过实例来演示这几种 复制类型的实现方法与步骤,主要包含以下知识点。 ? 了解SQL Server 2005复制 ? 配置分发服务器 ? 配置发布 ? 配置订阅 ? 监视复制

12.1

了解SQL Server 2005复制

复制是在数据库之间对数据和数据库对象进行复制和分发, 然后在数据库之间进行同步以保持数据一致性的一组技 术。使用复制,可以通过局域网和广域网、拨号连接、 无线连接和Internet将数据分发到不同位置以及分发给远 程或移动用户。

12.1.1

复制发布模型概述

一般的复制涉及源(数据对象)和目标(数据对象)。在 SQL Server 2005中,复制的源数据对象所在的数据库引 擎服务实例称为“发布服务器”,复制的目标数据对象 所在的数据库引擎服务实例称为“订阅服务器”,把数 据对象从“发布服务器”移动到“订阅服务器”的服务 称为“分布服务器”。

12.1.2

复制的类型

SQL Server 2005数据库提供了三种复制类型。每种复制类 型都适合于不同应用程序的要求。根据应用程序的需求 ,可以在拓扑中使用一种或多种复制类型。 1.快照复制 2.事务复制 3.合并复制

12.2

配置分发服务器

SQL Server 2005中的复制包括发布服务器、分发服务器和 订阅服务器3个角色。因此,要进行SQL Server 2005的复 制,首先要配置好发布服务器和分发服务器,然后才能 由客户端进行订阅。

12.2.1

配置分发服务器

分发服务器中包含分发数据库,其中存储着所有类型复制的 元数据和历史记录数据以及事务性复制的事务。若要建 立复制,必须配置分发服务器。只能为每台发布服务器 分配一个分发服务器实例,但是多台发布服务器可共享 一台分发服务器。在SQL Server 2005的角色中,中间的 角色是分发服务器。用户可以使用SQL Server Management Studio工具来配置分发服务器。

12.2.2

管理发布和分发服务器

在成功配置分发服务器后,在SQL Server Management Studio的“对象资源管理器”窗口中,右击“复制”节点 ,出现“发布服务器属性”、“分发服务器属性”和“ 禁用发布和分发”3个菜单命令。利用这些菜单项,可以 来查看和维护发布和分发服务器。 1.查看发布服务器属性 2.查看分发服务器属性 3.禁用发布和分发服务器

12.3

配置发布

在SQL Server 2005中,可以使用“新建发布向导”来创建 发布和定义项目。创建发布之后,可以利用“发布属性 ”对话框来查看和修改发布属性。

12.3.1

创建发布

创建发布是将要进行复制的源数据库对象进行发布处理。在 SQL Server 2005中,可以实现4种类型的发布。 ? 快照发布 ? 事务发布 ? 具有可更新订阅的事务发布 ? 合并发布

12.3.2

查看和修改发布属性

在创建发布之后,用户可以在SQL Server Management Studio工具中,利用“发布属性”对话框来查看和修改发 布属性。

12.4

配置订阅

在成功配置分发服务器并且成功创建发布后,就可以开始订 阅了。订阅是对发布中的数据和数据对象的副本的请求 。订阅定义将接收哪个发布,以及接收的时间和放置数 据库对象的位置等。 在计划订阅时,需要考虑代理处理发生的位置,所选择的订 阅类型将控制代理运行的位置。 推送订阅。合并代理或分发代理在分发服务器上运行。 请求订阅。代理在订阅服务器上运行。

12.5

监视复制

SQL Server 2005数据库复制监视器,提供一个以发布服务 器为主的界面,以两个窗格来显示所有复制活动。监视 器的左窗格添加发布服务器后,监视器的右窗格中立即 显示发布服务器,以发布对这些发布的订阅和各种复制 代理的相关信息。用户可以在SQL Server Management Studio工具,使用“复制监视器”来监视SQL Server 2005的复制。

12.6

小结

复制是将数据和数据库对象从一个数据库复制和分发到另一 个数据库,并通过同步操作维持数据库间的一致性。即 是通过分发服务器把数据从发布服务器(源)复制到订 阅服务器(目标)。通过复制可以实现数据库的高可用 性和分布作业处理。本章主要从复制的实现方法与步骤 等方面作了详细阐述。下一章将学习使用SQL Server 2005提供的Transact-SQL语言来操作SQL Server 2005中 的数据。

12.7

习题

1.在SQL Server2005中管理数据库时,为保持数据库中数 据的一致性,采用了复制技术,它包括哪些类型?应用 时各自有什么特点? 2.叙述复制技术实现的模型。 3.如何配置分发服务器? 4.叙述利用“新建发布向导”创建“发布服务器”的过程 。 5.如何查看和修改发布属性? 6.SQL Server2005中如何监视复制活动?

第13章

Transact-SQL数据操作

数据操作是用户对SQL Server 2005数据库中数据的基础管 理,主要包括SELECT(查询)、INSERT(插入)、 UPDATE(更新)和DELELTE(删除)等语句的使用, 即Transact-SQL的DML语句。本章将介绍如何使用这些 Transact-SQL的DML语句,来完成对SQL Server 2005数 据库中数据的基本操作,主要包含以下知识点。 ? 使用SELECT语句查询数据 ? 使用INSERT语句插入数据 ? 使用UPDATE语句更新数据 ? 使用DELETE语句删除数据

13.1

使用SELECT语句查询数据

使用数据库的最终目的是为了利用数据库中的数据,而 SELECT语句的功能就是从数据库中检索出符合用户需 求的数据,任何从数据库中取得数据的操作最终都将体 现为SELECT语句。因此,可以说SELECT是TransactSQL语言中使用频率最高的语句,也是Transact-SQL语 言中的一个核心语句。

13.1.1

SELECT字句

SELECT子句用于指定查询要返回的列,是SELECT语句中 必须有的部分。 1.SELECT子句的语法 2.SELECT子句的示例

13.1.2

INTO子句

INTO子句用于创建新表并将查询结果插入新表中,其子句 的语法格式如下。 [ INTO new_table ]

13.1.3

FROM子句

在SELECT语句中,FROM子句是必需的,除非选择列表只 包含常量、变量和算术表达式(没有列名)。FROM子 句也常用于在DELETE、SELECT和UPDATE语句中使 用的表、视图、派生表和联接表。 1.FROM子句的语法 2.FROM子句的示例

13.1.4

WHERE子句

WHERE子句用于指定查询返回的行的搜索条件。 1.WHERE子句的语法 2.算术表达式 3.逻辑表达式 4.BETWEEN关键字 5.IN关键字 6.LIKE关键字 7.NULL关键字

13.1.5

GROUP BY子句

GROUP BY子句将查询结果分组。 1.GROUP BY子句的语法 2.GROUP BY子句的示例

13.1.6

HAVING子句

HAVING子句用于指定组或聚合的搜索条件。HAVING只 能与SELECT语句一起使用。HAVING通常在GROUP BY子句中使用。如果不使用GROUP BY子句,则 HAVING的行为与WHERE子句一样。其语法格式如下。 [HAVING <search_condition>] 其中的参数search_condition用来指定组或聚合应满足的搜 索条件。当HAVING与GROUP BY ALL一起使用时, HAVING子句优于ALL。

13.1.7

ORDER BY子句

ORDER BY子句用于指定对查询结果排序。如果在 SELECT中同时指定了TOP,则ORDER BY无效。其语 法格式如下。 [ ORDER BY { order_by_expression [ ASC | DESC ] } [ , . . .N ] ]

13.1.8

COMPUTE子句

COMPUTE子句用于生成合计作为附加的汇总列出现在结果 集的最后。当与BY一起使用时,COMPUTE子句在结果 集内生成控制中断和小计。可在同一查询内指定 COMPUTE BY和COMPUTE。其语法格式如下。 [ COMPUTE { { AVG | COUNT | MAX | MIN | STDEV | STDEVP | VAR | VARP | SUM } ( expression ) } [ , . . .n ] [ BY expression [ , . . .n ] ]

13.1.9

联合查询

联接查询将两个或更多的SELECT语句的查询结果合并为单 个结果集,该结果集包含联合查询中的所有查询的全部 行。UNION运算不同于使用联接合并两个表中的列的运 算。下面列出了使用UNION合并两个查询结果集的基本 规则。 ? 所有查询中的列数和列的顺序必须相同。 ? 数据类型必须兼容。

13.1.10

嵌套查询

嵌套查询主要用于复杂的查询中。在Transact-SQL语言中 ,一个SELECT-FROM-WHERE语句称为一个查询块, 将一个查询块嵌套在另一个查询块的WHERE子句或 HAVING短语的条件中的查询称为嵌套查询。 嵌套查询中上层的查询块称为外层查询或父查询,下层查询 块称为内层查询或子查询。Transact-SQL语言允许多层 嵌套,但是在子查询中不允许出现ORDER BY子句, ORDER BY子句只能用在最外层的查询块中。

13.2

使用INSERT语句插入数据

INSERT语句将新行添加到表或视图中,其基本语法格式如 下。 INSERT [ INTO ] { table_name | view_name } { [ ( column_list ) ] {VALUES ( { DEFAULT | NULL | expression } [ , …n] ) | derived_table }

13.3

使用UPDATE语句更新数据

UPDATE语句用于更改表或视图中的现有数据,其基本语法 格式如下。 UPDATE { table_name | view_name } [ FROM { < table_source > } [ , . . .n ] SET Column_name = { expression | DEFAULT | NULL } [ , . . .n ] [ WHERE search_condition > ]

13.4

使用DELETE语句删除数据

DELETE语句用于删除数据库表中的数据,其基本语法格式 如下。 DELETE [ FROM ] { table_name WITH ( < table_hint_limited > [. . .n ] ) | view_name } [ WHERE < search_condition > ]

13.5

小结

对数据库中数据的操作可以通过图形向导来完成。同时在 SQL Server中提供了一套对数据操作的结构化查询语言 ——Transact-SQL。它与标准的SQL一样提供了从数据 定义(DDL)、数据操作(DML)、数据控制(DCL) 等方面的整套对数据操作的语言。本章主要在数据操作 (DML)方面如何利用操作语言(SELECT语句、 INSERT、UPDATE语句、DELETE语句)完成对数据表 中数据的操作。 下一章将学习SQL Server 2005提供的Transact-SQL应用编 程,主要包括Transact-SQL编程基础、视图、存储过程 和触发器。

13.6

习题

以School数据库为例,此数据库中有四张表,其结构如下: Students(sid,sname,email,grade) Teachers(tid,tname,email,salary) Courses(cid,cname,hour) Choices(no,sid,tid,cid,score) 在数据库中,存在如下关系:学生可以选择课程,一门课程 对应一名教师。在choices表中保存学生的选课记录。按 以下要求写出相应的查询语句。 1.查询年级为2007的所有学生的名称按编号升序排列。 2.查询学生的选课成绩合格的课程成绩,并把成绩换算为 积点(60分对应积点1,每增加1分,积点增加0.1)。 3.查询课时为48或32的课程的名称。

13.6

习题

4.查询所有课程名称中含有“JAVA”的课程编号。 5.查询所有选课记录的课程号(不重复)。 6.统计所有教师的平均工资。 7.查询所有学生的编号,姓名和平均成绩,按总平均成绩 降序排列。 8.统计各个课程的选课人数和平均成绩。 9.查询至少选修了三门课程的学生编号。 10.询编号为200701010101的学生所选的全部课程的课程名 称和成绩。 11.查询所有选修“数据库”的学生的编号。 12.求出每门课程学生选修的人数。

13.6

习题

13.求出至少有两名学生选修的课程信息。 14.找出选修课程成绩最差的选课记录。 15.找出与课程UML或C++的课时一样的课程名称。 16.查询选修了所有课程的学生信息。 17.利用集合运算,查询选修课程C++或JAVA的学生信息。 18.实现集合交运算,查询既选修课程C++又选修课程JAVA的学生信息。 19.实现集合减运算,查询选修课程C++而没有选修课程JAVA的学生信息。 20.向Students表插入记录(“0801010101”,“LinLin”)。 21.向Teachers表插入记录(“XCC00000001”,“XXX”, XCC00000001@mail.xcc.sc..cn,“10000”)。 22.将由编号为“XCC03700013”老师讲授的课程全部改成由姓名“YYY”的 老师讲授。 23.删除没有学生选修的课程信息和没有选课的学生信息。

第14章

Transact-SQL应用编程

Transact-SQL是SQL Server 2005的核心,与SQL Server 2005实例通信的所有应用程序都是通过将Transact-SQL 语句发送到服务器来实现的,与应用程序无关。对于开 发人员来说,掌握Transact-SQL及其应用编程是管理 SQL Server 2005和开发企业应用程序的基础。本章将介 绍Transact-SQL及其应用编程,主要包含以下知识点。 ? Transact-SQL编程基础 ? 视图 ? 存储过程 ? 触发器

14.1

Transact-SQL基本对象

Transact-SQL的基础对象主要包括注释符、运算符、通配 符、变量、批处理以及打印信息等。

14.1.1

注释符

使用注释符,以帮助阅读代码的用户理解代码的目的。在 Transact-SQL中,可以使用两类注释符。 单行注释。以--(两个连字符)开始,由换行符终止。 多行注释。包含在/*和*/中。其规则是,第一行用/*开始, 接下来的是注释行,并且用*/结束注释。

14.1.2

运算符

运算符主要包括算术运算符、比较运算符、逻辑运算符、位运 算符和连接运算符。 ? 算术运算符。包括+(加)、-(减)、*(乘)、/(除)、 %(取模)。 ? 比较运算符。包括>(大于)、<(小于)、=(等于)、>= (大于等于)、<=(小于等于)、<>(不等于)、!=(不 等于)、!>(不大于)、!<(不小于),其中!=、!>和!<不 是ANSI标准的运算符。 ? 逻辑运算符。包括AND(与)、OR(或)和NOT(非)。 ? 位运算符。包括&(按位与)、|(按位或)、~(按位非) 和^(按位异或)。 ? 连接运算符。连接运算符“+”将两个或多个字符串或二进 制字符串、列或字符串和列名的组合串联到一个表达式中 (字符串运算符),其格式为:expression1+expression2。

14.1.3

通配符

在SQL Server 2005中,可以使用以下通配符。 ? %。匹配包含零个或多个字符的任意字符串。该通配符 既可以用作前缀也可以用作后缀。 ? _(下划线)。匹配涉及模式匹配的字符串比较操作(如 LIKE和PATINDEX)中的任何单个字符。 ? []。匹配指定范围内或者属于方括号所指定的集合中的任 意单个字符。可以在涉及模式匹配的字符串比较(例如 ,LIKE和PATINDEX)中使用这些通配符。 ? [^]。匹配不在方括号之间指定的范围或集合内的任何单 个字符。

14.1.4

打印消息

可以使用PRINT语句来向客户端返回用户定义消息,其语法 格式如下。 PRINT msg_str | @local_variable | string_expr 其中,各参数说明如下。 ? msg_str。字符串或Unicode字符串常量。 ? @local_variable。任何有效的字符数据类型的局部变量。 @local_variable的数据类型必须是char或varchar,或者 必须能够隐式转换为这些数据类型。 ? string_expr。返回字符串的表达式。可包括串联的文字 值、函数和变量。消息字符串最长可为 8,000个字符,超 过该值以后的任何字符均被截断。

14.1.5

批处理

查询是一条SQL DML语句,批处理则是由一条或者多条 Transact-SQL语句构成,以GO语句作为结束符的一组 SQL语句。前端应用程序会将所有这些语句作为单个代 码单元发送给SQL Server 2005。 SQL Server 2005会将整个批处理作为一个整体来加以分析 、优化、编译和执行。如果在批处理语句中发现了任何 错误,都会导致整个批处理失败,也就是不会执行批处 理中的任何语句。但是,在这个解析过程中,SQL Server 2005不会检查对象的名字或模式,这是因为在执 行语句的时候模式有可能会发生变化的缘故。

14.1.6

变量

在Transact-SQL中,可以使用两种变量:局部变量和全局 变量。 ? 局部变量。在批处理中声明,当批处理执行完后就丢失 。由于是用户定义的,所以又称为用户定义的变量。 ? 全局变量。由服务器声明的,通常由服务器赋值。

14.2

Transact-SQL控制流语言

控制流语言控制批处理、存储过程、触发器和事务中的 Transact-SQL语句的执行流程。当语句必须有条件地或 者重复地执行时,一般就会用到控制流语言。TransactSQL的控制流语言把标准的SQL语句转换成编程语言。 SQL Server 2005提供的用于编程的控制流语言,主要包 括以下几种。

14.2.1

IF…ELSE

IF…ELSE语句用于指定Transact-SQL语句的执行条件。如 果满足条件,则在IF关键字及其条件之后执行TransactSQL语句:布尔表达式返回TRUE。可选的ELSE关键字 引入另一个Transact-SQL语句,当不满足IF条件时就执 行该语句:布尔表达式返回FALSE。IF…ELSE语句的语 法格式如下。 IF Boolean_expression { sql_statement | statement_block } [ ELSE { sql_statement | statement_block } ]

14.2.2

BEGIN…END

一个IF命令只能控制一条语句的执行与否,这显然缺乏实用 性。而BEGIN…END可以包括一系列的Transact-SQL语 句,从而可以执行一组Transact-SQL语句,作为一个整 体构成IF命令的下一条命令。BEGIN…END语句的语法 格式如下。 BEGIN { sql_statement | statement_block } END

14.2.3

WHILE…CONTINUE…BREAK

WHILE语句用于设置重复执行SQL语句或语句块的条件。 只要指定的条件为真,就重复执行语句。可以使用 BREAK和CONTINUE关键字在循环内部控制WHILE循 环中语句的执行。WHILE语句的语法格式如下。 WHILE Boolean_expression { sql_statement | statement_block } [ BREAK ] { sql_statement | statement_block } [ CONTINUE ] { sql_statement | statement_block }

14.2.4

CASE

CASE语句用于计算条件列表并返回多个可能结果表达式之 一,具有以下两种格式。 ? 简单CASE函数将某个表达式与一组简单表达式进行比较 以确定结果。 ? CASE搜索函数计算一组布尔表达式以确定结果。

14.2.5

TRY…CATCH

TRY…CATCH语句用于对Transact-SQL实现与Microsoft Visual C#和Microsoft Visual C++语言中的异常处理类似 的错误处理。Transact-SQL语句组可以包含在TRY块中 。如果TRY块内部发生错误,则会将控制传递给CATCH 块中包含的另一个语句组。 TRY…CATCH语句的语法格式如下。 BEGIN TRY { sql_statement | statement_block } END TRY BEGIN CATCH [ { sql_statement | statement_block } ] END CATCH [;]

14.2.6

WAITFOR

WAITFOR语句用于在达到指定时间或时间间隔之前,或者 指定语句至少修改或返回一行之前,阻止执行批处理、 存储过程或事务。WAITFOR语句的语法格式如下。 WAITFOR { DELAY 'time_to_pass' | TIME 'time_to_execute' | [ ( receive_statement ) | ( get_conversation_group_statement ) ] [ , TIMEOUT timeout ] }

14.2.7

GOTO

GOTO语句将执行流更改到标签处,跳过GOTO后面的 Transact-SQL语句,并从标签位置继续处理。GOTO语句 和标签可在过程、批处理或语句块中的任何位置使用。 GOTO语句可嵌套使用。GOTO语句的语法格式如下。 Define the label: label : Alter the execution: GOTO label

14.2.8

RETURN

RETURN语句从查询或过程中无条件退出。RETURN的执 行是即时且完全的,可在任何时候用于从过程、批处理 或语句块中退出。RETURN之后的语句将不被执行。 RETURN语句的语法格式如下。 RETURN [ integer_expression ]

14.3

Transact-SQL常用函数

函数给用户提供了强大的功能,它使用户不需要编写很多代 码就能够完成某些任务。在数据库的日常维护和管理中 ,函数的使用是非常频繁的。Transact-SQL提供了很多 能返回信息的函数,主要包括字符串函数、时间日期函 数、数学函数、转换函数和聚合函数。

14.3.1

字符串函数

在数据库中存储的字符串函数可以实现对字符串的操作、查 找和转换等操作。

14.3.2

日期时间函数

使用日期时间函数可以实现对日期时间数据的操作。

14.3.3

转换函数

CAST和CONVERT转换函数用来把表达式从一种形式转换 成另外一种形式,其语法格式如下。 Syntax for CAST: CAST ( expression AS data_type [ (length ) ]) Syntax for CONVERT: CONVERT ( data_type [ ( length ) ] , expression [ , style ])

14.3.4

数学函数

数学函数用来执行比较复杂的数学运算。

14.3.5

聚合函数

聚合函数可以返回整个或者几个列或者一个列的汇总数据。 常用的聚合函数有AVG(平均值)、COUNT(计数)、 MAX(最大值)、MIN(最小值)和SUM(求和)。除 了COUNT以外,聚合函数都会忽略空值。所有聚合函数 均为确定性函数。也就是说,只要使用一组特定输入值 调用聚合函数,该函数总是返回相同的值。

14.3.6

系统函数

系统函数用于显示与SQL Server 2005服务器、数据库和用 户相关的特殊信息。系统函数可以用于使用表达式的地 方,它的调用格式为:system_function(argument)。

14.4

视图

视图是SQL Server 2005数据库的重要组成部分,在大部分 的事务和分析型数据库中,有较多的使用。SQL Server 2005为视图提供了多种重要的扩张特性,如分区视图等 ,这些新特性使数据库的灵活性和伸缩性得以提升。

14.4.1

了解视图

视图是一个虚拟表,其内容由查询定义。同真实的表一样, 视图包含一系列带有名称的列和行数据。视图在数据库 中并不是以数据值存储集形式存在,除非是索引视图。 行和列数据来自由定义视图的查询所引用的表,并且在 引用视图时动态生成。

14.4.2

创建视图

创建视图可以使用SQL Server Management Studio图形工具 的查询设计器来完成,也可以通过新建查询编写 Transact-SQL语句代码来实现。 1.使用SQL Server Management Studio创建标准视图 2.使用CREATE VIEW语句创建标准视图

14.4.3

修改、重命名和删除视图

视图创建完成后,可以支持应用程序的开发。但是,应用程 序往往是经常发生变化的,因此也要求视图改变以适应 新的应用程序。SQL Server 2005提供了视图修改功能, 完成对视图的修改操作。 1.使用SQL Server Management Studio修改、重命名和删 除视图 2.使用Transact-SQL语句修改、重命名和删除视图

14.4.4

查看和使用视图

每当创建了一个新的视图,则在系统说明的系统表中就定义 了该视图的存储,并且可以相当于数据表来使用。所以 ,视图的查看和使用与数据表完全一样。 1.查看视图 2.使用视图

14.5

存储过程

存储过程是数据库中的一个重要对象,利用SQL Server 2005提供的存储过程机制,开发人员和数据库管理人员 可以高效管理和开发数据库应用。

14.5.1

了解存储过程

存储过程(Stored Procedure)是指封装了可重用代码的模 块或例程,是一组为了完成特定功能的SQL语句集,可 以接受输入参数、向客户端返回表格或标量结果和消息 、调用数据定义语言(DDL)和数据操作语言(DML) 语句,然后返回输出参数,经编译后存储在数据库中。 用户通过指定存储过程的名字并给出参数(如果该存储 过程带有参数)来执行它。

14.5.2

创建存储过程

存储过程是已保存的Transact-SQL语句集合,或者对.NET Framework公共运行时(CLR)方法的引用,可接受并 返回用户提供的参数。用户可以创建存储过程供永久使 用或者在一个会话(局部或全局临时过程)中临时使用 。 1.在SQL Server Management Studio中建立存储过程 2.使用CREATE PROCEDURE语句创建存储过程

14.5.3

执行存储过程

若要执行存储过程,用户可以在SQL Server Management Studio图形工具中进行操作,也可以使用Transact-SQL的 EXECUTE语句。如果存储过程是Transact-SQL批处理 中的第一条语句,那么省略掉EXECUTE关键字也可以执 行存储过程。 1.在SQL Server Management Studio中执行存储过程 2.使用EXECUTE语句执行存储过程

14.5.4

管理存储过程

存储过程成功创建后,可以使用SQL Server Management Studio的对象资源管理器、系统存储过程或Transact-SQL 语句来查看、修改、重命名和删除用户创建的存储过程 。 1.在SQL Server Management Studio中管理存储过程 2.使用ALTER PROCEDURE语句修改存储过程 3.利用系统存储过程重命名存储过程 4.使用DROP PROCEDURE语句删除存储过程

14.6

触发器

触发器是一种特殊的存储过程,为数据库提供了有效的监控 和处理机制,确保了数据和业务的完整性。SQL Server 2005数据库在传统触发器的基础上进行了扩展,实现了 对数据库结构操作时的触发机制。 SQL Server 2005数据库提供了DML触发器和DDL触发器两 大类。由于DDL触发器是SQL Server 2005引入的新概念 ,主要应用于数据审计等工作,不属于数据库基础使用 范围。下面将主要介绍DML触发器。

14.6.1

DML触发器

DML触发器是当数据库服务器中发生数据操作语言(DML )事件时要执行的操作。DML事件包括对表或视图发出 的UPDATE、INSERT或DELETE语句。DML触发器用 于在数据被修改时强制执行业务规则,以及扩展SQL Server 2005约束、默认值和规则的完整性检查逻辑。 1.DML触发器的类型 2.DML触发器的工作原理 3.创建DML触发器 4.修改DML触发器 5.启用或禁用DML触发器 6.删除DML触发器

14.6.2

DDL触发器

DDL触发器是SQL Server 2005新增的功能。它是一种特殊的触发器,当 服务器或数据库中发生数据定义语言(DDL)事件时触发,主要包括 CREATE、ALTER和DROP语句。它们可以用于在数据库中执行管理 任务,例如,审核以及规范数据库操作等。 创建DDL触发器的CREATE TRIGGER语句的语法格式如下。 CREATE TRIGGER trigger_name ON { ALL SERVER | DATABASE } [ WITH <ddl_trigger_option> [ ,...n ] ] { FOR | AFTER } { event_type | event_group } [ ,...n ] AS { sql_statement [ ; ] [ ,...n ] | EXTERNAL NAME < method specifier > [;]} <ddl_trigger_option> ::= [ ENCRYPTION ] [ EXECUTE AS Clause ]

14.7

小结

在SQL Server中利用Transact-SQL语言进行程序设计时, 通常是把一组Transact-SQL语言中的语句组成一个批处 理,并由一个或多个批处理构成一个脚本。本章介绍了 Transact-SQL语言中编程的语法规范和基本编程方法。 在此基础上,介绍了存储过程和触发器。存储过程是存 放在服务器上的Transact-SQL语句的预编译集合,并以 一个名称存储在数据库中,作为一个单元来处理。触发 器是一种特殊字段的存储过程,在表中数据被修改时自 动执行,利用触发器可实现更为复杂的数据完整性约束 。 下一章将学习SQL Server 2005商业智能中的集成服务功能 ,利用该集成服务可以实现对数据仓库的提取、转换和 加载(ETL)包等操作。

14.8

习题

1.以School数据库为基础,编写一Transact-SQL程序,统计选修 课程“C++”和“JAVA”的人数,并判断它们是否相等。 2.创建一视图,其中包含选课成绩合格的学生编号、所选课程的 课程号和该课程的成绩。 3.创建一视图,其中包含学生姓名和他所选课程的课程名及讲授 该课程的教师姓名。 4.创建一视图,其中包含学生的学号和他所选课程的平均成绩。 5.为表Choices建立触发器,当插入或更新表中数据时,保证所 操作的记录的score值大于0。 6.定义具有以下功能的存储过程:(1)计算机给定课程的总分 数;(2)统计给定课程各分数段(〈60,[60,70),[70,80 ),[80,90),[90,100])的人数;(3)将课程成绩从百分制 改为等级制(ABCDE)。并给出一个调用实例。

第15章

SQL Server 2005集成服务

SQL Server 2005集成服务(Integration Services)是生成高 性能数据集成解决方案的平台,其中包括数据仓库的提 取、转换和加载(ETL)包。使用SQL Server 2005集成 服务工具可以设计、创建、部署和管理包,从而可以处 理日常的业务需求。本章将在简要介绍SQL Server 2005 集成服务的基础上,详细介绍如何创建和部署一个简单 ETL包,主要包含以下知识点。 ? 集成服务简介 ? 使用向导创建基本SSIS包 ? 创建简单SSIS包 ? 部署SSIS包

15.1

集成服务简介

SQL Server 2005集成服务包括生成并调试包的图形工具和 向导;执行如FTP操作、SQL语句执行和电子邮件消息传 递等工作流功能的任务;用于提取和加载数据的数据源 和目标;用于清理、聚合、合并和复制数据的转换;管 理服务,即用于管理Integration Services包的Integration Services服务;以及用于对Integration Services对象模型 编程的应用程序接口(API)。

15.1.1

集成服务的典型用途

SQL Server 2005集成服务提供一系列支持业务应用程序开 发的内置任务、容器、转换和数据适配器。无需编写一 行代码,就可以创建SSIS解决方案来使用ETL和商业智 能解决复杂的业务问题,管理SQL Server 2005数据库以 及在SQL Server 2005实例之间复制SQL Server 2005对象 。

15.1.2

集成服务的体系结构

SQL Server 2005集成服务由四个关键 部分组成:Integration Services服务 、Integration Services对象模型、 Integration Services运行时和运行时 可执行文件以及封装数据流引擎和 数据流组件的数据流任务。SQL Server 2005集成服务各部分之间的 关系,如图15-1所示。 1.Integration Services服务 2.Integration Services对象模型 3.Integration Services运行时 4.Integration Services数据流

15.1.3

集成服务的工具

SQL Server 2005集成服务的设计与运行涉及如下两个工具。 ? Business Intelligence Development Studio,用于开发商业解 决方案所需的Integration Services包。 ? SQL Server Management Studio,用于在生产环境中管理 包。

15.2

使用向导创建基本SSIS包

SQL Server 2005 Integration Services提供了SQL Server导入 和导出向导,用于生成执行数据传输的包。这些包可以 从数据源中提取数据并将其加载到目标中,但在传输过 程中包只能执行很少的数据转换。此外,使用该向导可 快速创建基本包,然后可以在SSIS设计器中对包进行增 强。

15.2.1

创建Integration Services项目

SQL Server 2005 Integration Services项目在SQL Server Business Intelligence Development Studio中进行。

15.2.2

运行向导创建基本包

SQL Server 2005 Integration Services提供了SQL Server导入 和导出向导,用于生成执行数据传输的包。下面运行 “SQL Server导入和导出向导”来创建一个基本包,将 “Practice_JWGL”数据库的所有表,导出到一个名为 “SSIS_Tutorial.xls”的文件中。

15.3

创建简单SSIS包

首先在“SQL Server Business Intelligence Development Studio”商业智能开发平台中,创建一个名为 “SSIS_Tutorial_1”的Integration Services项目。然后利 用SSIS设计器创建一个简单的SQL Server 2005 Integration Services包,该包将“Practice_JWGL”数据 库中的“t_student”数据表中的数据导入到平面文件 “Outdatafile.txt”中。

15.3.1

建立数据源和数据源视图

数据源和数据源视图的目的都是使创建的数据包更容易地使 用数据包中的数据。 1.建立数据源 2.建立数据源视图

15.3.2

建立SSIS包

SSIS包是SQL Server 2005集成服务的核心,它是可被检索 、执行和保存的工作单元。SSIS包是一个有组织的集合 ,其中包括连接、控制流元素、数据流元素、事件处理 程序、变量和配置。 用户可以通过SQL Server 2005集成服务提供的图形设计器 或以编程生成方式将这些对象组合到SSIS包中,并可以 将完成的SSIS包保存到SQL Server 2005的SSIS包存储区 或文件系统中。创建SSIS包可以参考以下操作。

15.3.3

建立控制流

SQL Server 2005集成服务包中的控制流,由不同类型的控 制流元素构成:容器、任务和优先约束等。下面建立一 个简单的控制流。

15.3.4

建立数据流

SQL Server 2005集成服务包中的数据流,可以由多种元素 构成,如提取数据的源、修改和聚合数据的转换以及加 载数据的目标等。一个SSIS包至少要包含一个数据流任 务,才可以构成数据流。用户可以使用数据流设计器在 包中创建数据流。在数据流任务中读取处理数据,可以 使用前面建立的数据源。

15.3.5

执行SSIS包

在开发、调试和测试SSIS包的过程中,SSIS包最常在SQL Server Business Intelligence Development Studio中运行。 如果从SSIS设计器运行包,则SSIS包始终都可以立即运 行。用户使用SQL Server Business Intelligence Development Studio环境运行SSIS包。

15.4

部署SSIS包

使用SQL Server 2005集成服务可以方便地将包部署到任何 计算机中。包部署过程一般包括两个步骤,如下所示。 第一步是生成集成服务项目,以创建包部署实用工具。 第二步是将生成集成服务项目时说创建的部署文件夹复制到 目标计算机,然后运行包安装向导来安装这些包。 1.创建部署包 2.将包部署到文件系统 3.将包部署到SQL Server 2005中

15.5

小结

集成服务是SQL Server 2005中面向高性能数据集成的功能 ,它有一个配套的数据流机制和控制流机制,并且可以 为数据分析服务提供必要的ETL支持。集成服务类似以 往的DTS,采用包(Package)方式来执行一个个具有数 据流支持的数据任务。除此之外,集成服务还有很完善 的图形化管理工具和丰富的应用开发接口(API)。在 SQL Server 2005中把集成服务的实现分成了面向流程处 理的Integration Service run-time engine和面向数据转换 的Integration Service data flow engine。 下一章将学习SQL Server 2005商业智能中的报表服务功能 ,利用该报表服务可以实现创建和管理基于Web的报表 操作。

15.6

习题

1.SQL Server2005的集成服务包括哪些方面? 2.叙述SQL Server2005集成服务的体系结构,其中各部分 功能是什么? 3.SQL Server2005集成服务可从哪些方面对数据进行管理 ? 4.简述创建实现把一数据库中的表导入到文本文件中的 SSIS包的过程。 5.数据流在SSIS包中的作用是什么?如何建立数据流?

第16章

SQL Server 2005报表服务

SQL Server 2005报表服务(Reporting Services)是基于服 务器的报表平台,可以用来创建和管理包含关系数据源 和多维数据源中的数据的表格、矩阵、图形和自由格式 的报表。用户可以通过基于万维网的连接来查看和管理 所创建的报表。本章将在简要介绍SQL Server 2005报表 服务的基础上,详细介绍如何创建和部署一个简单的报 表,主要包含以下知识点。 ? 报表服务简介 ? 报表服务组件 ? 创建和设计报表 ? 发布和使用报表

16.1

报表服务简介

SQL Server 2005报表服务是一个基于服务器的报表平台, 用来创建、管理和发送报表。该产品依赖于Windows的 IIS服务。SQL Server 2005报表服务提供给用户一个简便 的解决方案,来创建、分发和管理报表,主要包括以下 三个方面的核心组件。 ? 一整套工具,可以用来创建、管理和查看报表。 ? 一个报表服务器组件,用于承载和处理各种格式的报表 。输出格式包括HTML、PDF、TIFF、Excel、CSV等。 ? 一个API,使开发人员可以在自定义应用程序中集成或扩 展数据和报表处理,或者创建自定义工具来生成和管理 报表。

16.2

报表服务组件

SQL Server 2005 Reporting Services是一组处理组件、工具 和编程接口的集合,支持在托管环境中进行开发以及使 用格式丰富的报表。该工具集包括部署工具、配置和管 理工具以及报表查看工具。编程接口包括简单对象访问 协议(SOAP)、URL端点和Windows Management Instrumentation(WMI),可以轻松地与新的或现有的 应用程序和入口集成。

16.2.1

报表服务器

报表服务器是Reporting Services的主要组件。报表服务器以 Microsoft Windows服务和Web服务的形式实现,可以为 处理和呈现报表提供优化的并行处理基础结构。Web服 务公开了一组客户端应用程序可用来访问报表服务器的 编程接口。Windows服务可提供初始化、计划和传递服 务以及服务器维护功能。这些服务协同工作,构成单个 报表服务器实例。

16.2.2

报表管理器

报表管理器是基于Web的报表访问和管理工具,可以通过 Microsoft Internet Explorer进行访问。可以使用报表管 理器通过HTTP连接从远程位置管理单个报表服务器实例 ,还可以使用报表管理器的报表查看器和导航功能。

16.2.3

报表生成器

信息工作者通常需要访问业务数据,才能及时有效地做出决 策。他们需要一种功能强大且易于使用的工具,以便在 无需了解基础数据源结构的情况下就可浏览和查找信息 。为了帮助用户实现这些目标,SQL Server 2005 Reporting Services的报表生成器组件提供了即席生成报 表的功能。报表生成器与SQL Server Reporting Services 完全集成。 1.生成报表 2.浏览数据 3.使用Reporting Services的功能

16.2.4

报表设计器和模型设计器

报表设计器和模型设计器是Business Intelligence Development Studio中的两个设计工具。工具中的设计图 面包括用于访问报表和模型制作功能的选项卡式窗口、 向导和菜单。选择报表服务器项目、报表服务器向导或 者报表模型项目模板后,即可使用设计工具。 1.报表设计器 2.模型设计器 3.带有报表设计器和模型设计器的Business Intelligence Development Studio

16.3

创建和设计报表

用户可以使用报表设计器向导工具或报表设计器来创建和设 计SQL Server 2005报表。 注意:Reporting Services将报表定义存储在报表服务器数据 库中。这些报表定义是使用报表定义语言(RDL)创建 的,报表定义语言是一种描述报表中所有元素(包括数 据模型、格式和表达式)的XML格式。

16.3.1

创建报表服务器项目

报表服务器项目在SQL Server Business Intelligence Development Studio中进行。

16.3.2

建立数据源

用户可以建立数据源。

16.3.3

创建报表

用户可以通过向导创建报表。

16.4

发布和使用报表

前面使用报表生成器向导或报表设计器创建报表,实际上是 在本地创建报表定义。在使用报表之前,需要部署和发 布报表到相应的Reporting Services上。

16.4.1

发布报表

在发布报表之前,需要设置一些关于报表项目的属性,。

16.4.2

使用报表

生成和部署报表后有两种方式可以使用该报表服务器项目: Visual Studio和Web。

16.5

小结

报表服务(Reporting Services)是一个基于服务器的企业级 报表环境,可借助Web Services进行管理。报表可以用不 同的格式发布,并可带多种交互和打印选项。通过把报 表作为更进一步的商业智能的数据源来分发,复杂的分 析可被更多的用户所用。本章详细介绍如何创建、部署 、发布、使用简单的报表。 下一章将学习SQL Server 2005商业智能中的分析服务功能 ,利用该分析服务可以来开发和部署Analysis Services项 目。

16.6

习题

1.SQL Server2005报表服务体系结构是怎样的? 2.报表服务器完成什么功能,如何配置报表服务器? 3.叙述创建、发布报表的过程,如何使用SQL Server2005 中发布的报表?

第17章

SQL Server 2005分析服务

利用SQL Server 2005分析服务(Analysis Services)可以方 便地为商业智能应用程序提供联机分析处理(OLAP)和 数据挖掘解决方案。分析服务工具提供了设计、创建和 管理来自数据仓库的多维数据集和数据挖掘模型的功能 ,以实现对OLAP的支持和数据挖掘数据的客户端访问。 本章将简要介绍如何利用数据仓库设计器来开发和部署 Analysis Services项目,主要包含以下知识点。 ? 定义数据源视图 ? 定义和部署多维数据集

17.1

定义数据源视图

用户在使用SQL Server 2005 Analysis Services前,要求运行 SQL Server 2005 Analysis Services服务。启动分析服务的 操作过程如下。 (1)在桌面“开始”菜单中,依次选择“程序”|“Microsoft SQL Server 2005”|“配置工具”|“SQL Server配置管理器” 命令,打开“SQL Server Configuration Manager”对话框 。 (2)单击“SQL Server 2005服务”节点,在右侧的详细窗格 中,右击“SQL Server Analysis Services( MSSQLSERVER)”服务,选择“启动”命令,即可启动 SQL Server Analysis Services。

17.1.1

创建Analysis Services项目

SQL Server 2005 Analysis Services项目在SQL Server Business Intelligence Development Studio中进行。

17.1.2

定义数据源

数据源是在包外部创建的连接引用。数据源表示对数据存储 区的简单连接,其中包括数据存储区中所有的表和视图 。对于表间关系等高级数据功能,请使用数据源视图。

17.1.3

定义数据源视图

在SQL Server 2005 Analysis Services项目中定义了数据源后 ,下一步通常是定义项目的数据源视图。数据源视图是 一个元数据的单一统一视图,该元数据来自指定的表以 及数据源在项目中定义的视图。通过在数据源视图中存 储元数据,可以在开发过程中使用元数据,而不需要打 开与任何基础数据源的连接。

17.1.4

修改表的默认名称

数据源视图中表和视图的元数据派生与基础数据源中的这些 对象的元数据。SQL Server Business Intelligence Development Studio使用数据源视图中这些对象的元数据 来定义维度、属性和度量值组。但是,SQL Server Business Intelligence Development Studio使用对象的 FriendlyName属性,而不是Name属性。

17.2

定义和部署多维数据集

在SQL Server 2005 Analysis Services项目中定义了数据源视 图后,就可以定义Analysis Services多维数据集了。开始 时可以先定义与任何多维数据集都无关的维度,然后再 使用这些维度定义一个或多个多维数据集。也可以在 SQL Server Business Intelligence Development Studio中 使用多维数据集向导,一次性定义一个多维数据集及其 维度。

17.2.1

定义多维数据集

可以在SQL Server 2005中,使用多维数据集向导轻松地定 义一些简单的多维数据集。该向导可以帮助用户为多维 数据集定义度量值和维度。在该向导中,可以基于数据 源及数据源视图定义多维数据集,也可以在不使用现有 数据源及数据源视图的情况下,定义多维数据集。如果 在不使用现有数据源及数据源视图的情况下定义多维数 据集,则使用该向导将生成基础数据源架构。

17.2.2

检查多维数据集和维度属性

使用多维数据集向导定义了多维数据集后,就可以在多维数 据集设计器中检查该多维数据集和维度属性。下面将查 看“SSAS_Tutorial”分析项目中的多维数据集的结构, 从而了解多维数据集向导定义的维度和多维数据集的属 性。 1.多维数据集设计器选项卡 2.在多维数据集设计器中检查多维数据集和维度的属性

17.2.3

部署分析服务项目

若要查看位于“SSAS_Tutorial”项目的“SSAS_Tutorial_1” 多维数据集中的数据,必须将该项目部署到Analysis Services的指定实例,然后处理该多维数据集及其维度。 部署Analysis Services项目将在Analysis Services实例中创 建定义的对象。处理Analysis Services实例中的对象会将 基础数据源中的数据复制到多维数据集对象中。 将多维数据集部署到开发服务器上的Analysis Services实例 中以完成业务智能项目的开发时,通常会使用Analysis Services开发向导部署到生产服务器。下面将首先查看 “SSAS_Tutorial”项目的部署属性,然后将该项目部署 到Analysis Services的本地实例中。

17.3

小结

分析服务(Analysis Services)提供了一个统一和集成的商 业数据视图,可被用做所有传统报表、OLAP分析、关键 绩效指标(KPI)记分卡和数据挖掘的基础。通过引入了 一个唯一的统一空间模型(UDM),Analysis Services把 传统关系型报表模型的灵活、丰富和经典OLAP模型的强 大易用的分析、极佳的性能结合在了一起。借助于前摄 缓存和高级商业智能功能,Analysis Services在保持了 MOLAP级的性能的同时,实现了实时分析。在企业级功 能上的主要增强包括可伸缩性、易管理性和提高效率等 方面。 下一章将学习如何使用微软最新的带Service Pack 1的Visual Studio 2008和SQL Server 2005数据库来开发和部署一个 完整的网上书城应用程序,来介绍SQL Server 2005典型 的应用开发特性。

17.4

习题

1.SQL Server2005的分析服务可以实现哪些数据管理功能 ? 2.如何定义数据源视图? 3.如何定义多维数据集? 4.叙述在多维数据集设计器中检查多维数据集和纬度的属 性的操作过程。 5.如何部署分析服务项目?

第18章

SQL Server 2005实例——至慧网上书城

Microsoft Visual Studio是微软公司开发的强大的集成开发环 境,能够开发多种Windows下的软件项目,包括 Windows应用程序、动态链接库、Windows服务、Web 服务、网页开发、Office集成开发以及数据库应用开发等 。本章将通过具体的实例,分析如何使用Visual Studio 2008和SQL Server 2005开发至慧网上书城应用程序,来 介绍SQL Server 2005典型的应用开发特性,主要包含以 下知识点。 ? 系统概述; 系统需求分析; ? 系统总体设计; 系统详细设计; ? 数据库设计与实现; 关键技术准备; ? 前台主要功能模块设计; ? 后台管理主要功能模块设计; 网站编译与发布。

18.1

系统概述

随着企业信息时代的到来和网站信息更新速度的发展,电子 商务(EC)也很快地发展起来。电子商务描述了通过计 算机网络(如Internet)来购买、销售和交换商品、服务 和信息的过程。电子商务网站所提供的用户服务不仅包 括诸如服务热线、呼叫中心、售后服务、退换货物等, 还包括信息及时更新、有效地站点导航系统、支持广泛 的用户等。电子商务的一个重要技术特征就是利用Web 技术来传输和处理商业信息。 本章要介绍的——至慧网上书城系统属于B2C电子商务网站 系统,它能够直接绕过中介(如批发商、销售商或经销 商等)建立与客户的直接关系。本网站可以为用户提供 书籍的详细信息,用户可以在线购买书籍,管理自己的 购物车,确定自己的订单。网上购书使得人们购买书籍 变得更方便、更加容易。

18.2

系统需求分析

通过调查,要求本网上书城能满足以下基本需求。 ? 由于用户的计算机水平有限,要求有良好的人机界面。 ? 管理系统会员,由于网站采用了会员系统,要求有较好 的权限管理。 ? 为充分展现本系统的交互性,采用动态网页技术实现图 书信息的在线发布。 ? 当外界环境(停电、网络病毒)干扰本系统时,系统可 以自动保护原始数据的安全。 ? 数据计算自动完成,尽量减少人工干预。 ? 当用户购买完书籍时,能安全退出系统。

18.3

系统总体设计

在实施一个项目前进行系统的总体设计是非常必要的,通过 项目总体上的规划与设计能够从全局的高度明确整个系 统的需求、逻辑结构以及功能。这不仅使系统实施有据 可依,也使整个开发过程能够高效、高质量地完成。下 面就对整个网上书城系统作一个简单的规划和设计。

18.3.1

系统规划

根据本网上书城系统的功能需求,可以将其分为前台网站系 统和后台管理系统两大部分。 1.前台网站系统 2.后台管理系统

18.3.2

用户行为分析

在实现本网上书城系统之前,需要站在用户的角度进行用户 行为分析,进而确定系统的目标。网络用户在使用本网 上书城选购图书时,其典型行为如图18-1所示。

18.3.3

系统功能设计

网上书城的前台网站系统的功能结构,如图18-2所示。网上 书城的后台管理系统的功能结构,如图18-3所示。

18.4

系统详细设计

18.4.1

设计目标

本系统是为了方便用户实现网上购书而设计的,采用人机对 话的方式,界面友好,浏览查询图书准确快速。并且系 统采用SQL Server 2005作为后台数据库,数据存储安全 可靠。

18.4.2

构建开发环境

工欲善其事,必先利其器。在实际动手开发前,首先需要构 建好其开发环境,为后面的开发提供稳定、高效的平台 。本至慧网上书城网站系统将采用如下的开发。 1.开发环境 2.服务器端 3.客户端

18.5

数据库设计与实现

18.5.1

系统实体E-R图

本网上书城主要包括以下6个基本实体。 ? 管理员信息实体主要是用来表示管理员的基本信息 ? 用户信息实体主要是用来表示用户的基本信息 ? 图书类别信息实体主要是用来表示图书类别的基本信息 ? 图书信息实体主要是用来表示图书的基本信息 ? 购物车实体主要是用来表示购物车的基本信息 ? 订单信息实体主要是用来表示订单的基本信息

18.5.2

主要数据表结构

本网上书城主要包括以下6个数据表。 ? 管理员信息表主要是用来保存管理员的登录名和密码 ? 用户信息表主要是保存用户的相关信息 ? 图书类别信息表保存图书类别的相关信息 ? 图书信息表主要是用来保存图书的相关信息 ? 购物车信息表主要是用来保存用户购物车的相关信息 ? 订单信息表主要是用来记录用户的订单信息

18.5.3

数据库与表结构

在SQL Server 2005中创建“ZhiHuiBookShopDB”数据库。

18.6

关键技术准备

本章Web网站应用程序实例开发将主要用到三层结构设计思 想、ADO.NET数据库访问技术和页面布局DIV+CSS这3 种关键技术。三层结构在现在的各种应用系统中用得越 来越多,其结构清晰,易于理解和扩展。ADO.NET数据 库访问技术是ASP.NET的核心,其中的数据访问对象使 得数据访问变得方便、容易。DIV+CSS布局技术是一种 新的呈现方式,相对于表格布局来说它有着表格布局不 可替代的优越性,是页面呈现方式上的一次全新革命。 下面对这3种关键技术做一个简单介绍,为以后深入学习 ASP.NET奠定基础。

18.6.1

三层结构设计思想

下面简单地介绍一下三层结构设计思想,宗旨在让读者能够 了解并能在以后的编程开发过程中使用这样一种规范的 架构模式。 B/S系统中常常采用如图18-12所示的多层体系结构,这种多 层结构在层与层之间相互独立,任何一层的改变都不会 影响其他层的功能,程序的结构和功能变得清晰、易于 理解。 1.页面显示层(USL) 2.业务逻辑层(BLL) 3.数据访问层(DAL)

18.6.2

ADO.NET数据库访问技术

ADO.NET提供了平台互操作性和可伸缩的数据访问功能。 ADO.NET用于关系型的、面向表的格式访问数据。主要包括 关系数据库,例如SQL Server、Oracle、Access或其他数据库 ,还包括非关系数据源。ADO.NET被集成到.NET Framework 中,用于.NET语言,尤其是C#语言。ADO.NET使用了 Connection、Command、DataSet、DataAdapter和 DataReader等对象对数据库进行处理。ADO.NET的整体结构 如图18-13所示。其数据访问方式有两种:一是通过 DataReader对象来直接访问;二是通过DataSet和DataAdapter 来访问。 1. Connection对象 2.Command对象 3.DataReader对象 4.DataAdapter对象 5.DataSet对象

18.6.3

页面布局DIV+CSS

表格布局已经有很多年的历史了,在HTML和浏览器还不很 完善的时候,要想让页面内的元素能有一个比较好的格 局是比较麻烦的事情,由于表格不仅可以控制单元格的 宽度和高度,而且可以互相嵌套,所以为了让各个网页 元素能够放在预设的位置,表格就成为网页制作者的得 力工具。 采用表格布局页面时,为了实现设计的布局,制作者往往在 单元格标签<td>内设置高度、宽度和对齐等属性,同时 ,装饰性的图片和内容混杂在一起,造成逻辑结构的混 乱和冗余的表格嵌套。 本着DIV+CSS布局的诸多优点,从2006年开始,中国就兴 起了DIV+CSS布局的风潮,如网易、新浪等这样的大型 门户网站都采用了DIV+CSS布局。

18.7

前台系统文件组织结构

为了便于读者对本系统的 学习,在此将系统文件 的组织结构展示出来。 另外,将相同功能类型 的Web窗体文件存放在 同一个文件夹是一个很 好的习惯,便于后期的 管理与维护,希望读者 注意。系统文件组织结 构如图18-14所示。

18.8

公共模块设计

本网上书城的整个系统采用三层结构。由于分层结构设计有 着诸多优点,其中很重要的就是这样的设计使整个系统 结构很清晰、很容易理解,更便于后期对系统的维护。 下面就开始着手设计系统的数据访问层和业务逻辑层, 在设计各层之前需要先配置Web.config文件。

18.8.1

Web.config文件设计

在本系统中,Web.config文件主要配置参数是连接数据库的字符 串,配置好之后,就省略了在其他页面中重复编写连接数据库 的字符串的操作。要设置它,只需参照下面的代码在 <appSettings>标记内添加数据库连接字符串即可: <?xml version="1.0"?> <!此处省略…… <configuration> <appSettings> <add key="ConnString"value="server=.;database=ZhiHuiBookShop DB;uid=sa;pwd=111;" /> </appSettings> <!此处省略…… <connectionStrings/>

18.8.2

数据库访问层类DataBase

正如我们在关键技术准备部分所介绍的 ,数据访问层包含一些对数据操作的 方法,这些方法将提供给业务逻辑层 的业务对象调用。这些方法只是对数 据操作,如关闭、打开连接,返回 DataSet,DataReader等,而不包含具 体的业务功能。整个网站的数据库访 问层DataBase类视图,如图18-15所示 。

18.8.3

业务逻辑层类

从整个系统来看,包含多个实体对象,如用户、图书、购物 车和订单等。所有这些实体对象都划分在业务逻辑类中 ,并将它们组织成各个类模块,编写一些公用的方法来 供系统调用。 1.Users类 2.Book类 3.Cart类 4.Orders类 5.RandomCode类

18.9

网站主页设计

网站主页是书城给客户的 第一印象,其设计的 好坏直接关系到书城 以后的发展。网站系 统主页如图18-21所示

18.9.1

用户注册

用户首次登录必须成功注册才能进行图书的购买。在用户注 册页面主要是添加用户的相关信息到用户信息表中。为 了防止用户无限止地注册及机器程序自动注册,在此添 加了验证码。当然本实例只是引导读者考虑这样的安全 问题,并以尽量简单的方式呈现,这里验证码并不具有 实质性的安?浴 通过“免费注册”超级链接打开的用户注册页面,如图1822所示。

18.9.2

用户登录

用户登录按钮接收用户输入的用户登录名和密码,并作了简 单的验证判断,通过之后再调用用户类的UserLogin()方 法,验证用户是否为合法用户。

18.9.3

图书显示模块

图书显示功能从数据库中以栏目分类为条件,查询图书信息 ,然后再将数据记录绑定到Datalist控件上。

18.9.4

母版页设计

母版页的主要功能是为ASP.NET应用程序创建统一的用户 界面和样式,它提供了共享的HTML、控件和代码,可 作为一个模板,供网站内所有页面使用,从而提升了整 个程序开发的效率。 母版页的使用,可以为ASP.NET应用程序创建一个统一的 外观。利用母版页创建一个模板,然后将其应用到多个 页面中,这些页面都具有模板的外观。

18.10

后台管理主要功能模块设计

后台管理程序是一个系统非常重要的部分,它维护着整个系 统的核心数据,其设计的好坏也对整个系统稳定性、易 维护性起着关键的作用。

18.10.1

后台管理系统文件组织结构

在开发过程中对各功能页面的文件作一个规划和整理是一个 非常好的习惯,这样也有利于后期的开发和维护。本网 上书城的后台管理系统的文件组织结构,如图18-26所示 。

18.10.2

公共模块设计

在前面的部分我们已经对Book类、Cart类、Orders类、 Users类作了介绍,在后台管理程序的公共模块中除了这 些类之外还有一个Admin类,它主要是对整个系统的管 理员的管理。 在实际的维护过程中管理员往往不止一个,所以非常有必要 对系统的管理员作一个统一的管理,以保证合法的管理 员才能管理、维护整个系统。

18.10.3

系统主要页面设计

和前台页面相比,后台页面不必吸引用户,只是提供给管理 员自己维护使用,所以风格可以简洁为主,但页面的规 范和易用性原则还是必须的。下面是后台主要页面的设 计。 1.自定义导航控件设计 2.母版页设计 3.图书添加管理页设计 4.订单处理页设计

18.11

网站编译与发布

为了能在IIS中运行网站,需要在编译发布网站前注册安装 ASP.NET(2.0.50727)。

18.12

小结

本章从需求分析、系统设计再到系统实现逐步介绍了至慧网 上书城的开发流程。通过本章的学习,读者可以了解一 般网站系统的开发流程。在网站的开发过程中,采用了 一些主流的技术,如分层开发模式、DIV+CSS布局等, 它们代表着未来网站开发的主流方向,希望对读者有所 启发和帮助。 当然,本网站作为一个学习型的网上购物书城,宗旨在引导 读者从需求分析、系统设计到编码实现一个完整系统的 过程,还有很多方面有待完善,如数据验证、网上支付 等模块,还可以对系统的功能和权限作更细致的设计等 。这些都需要更多的知识储备,希望读者参看其他的相 关书籍来继续学习。


赞助商链接
更多相关文档:

地源热泵工作原理——较为详细

地源热泵工作原理——较为详细_电力/水利_工程科技_专业资料。地源热泵工作原理——较为详细 地源热泵工作原理 1 地源热泵工作原理 地源热泵则是利用水源热泵的一种...

COD较为详细的检测步骤及测试注意事项

COD较为详细的检测步骤及测试注意事项_理学_高等教育...在实践的基础上, 环境分析家寻求到另一种途径,...但有在线监测仪的行业标准 HJ/T191-2005《紫外(U ...

【西电大全、较为详细、推荐阅读】这么多出国深造的机...

【西电大全、较为详细、推荐阅读】这么多出国深造的机会,看看你知道多少?_工_高等教育_教育专区。【西电大全、较为详细、推荐阅读】这么多出国深造的机会,看看你...

西安旅游攻略较为详细

西安旅游攻略较为详细_哲学/历史_人文社科_专业资料 暂无评价|0人阅读|0次下载|举报文档 西安旅游攻略较为详细_哲学/历史_人文社科_专业资料。西安旅游攻略 较为...

postfix较为详细的搭建教程

具体方法如下: 1、使用 POP3 方法验证 Dovecot mutt -f pop://user@server[...(SA)是较为流行的反垃圾邮件软件,SpamAssassin 利用 Perl 语言来对邮件内容进行...

更多相关标签:
网站地图

文档资料共享网 nexoncn.com copyright ©right 2010-2020。
文档资料共享网内容来自网络,如有侵犯请联系客服。email:zhit325@126.com