第1章 介绍SQL Server 2005
为了帮助您学习SQL Server 2005,本章将着重介绍这个软件的主要组成部分。在深入详细探讨体系结构/数据库对象/数据库/数据库存储和服务器**这些话题之前,本章也还列出了该软件的不同版本之间的差别。本章结束时我们还会简短地回顾一下SQL Server的历史发展进程。
1.1 什么是SQL Server 2005
如同大多数人所知道的那样,SQL Server 2005主要被看作是一种关系型数据库管理系统(Relational Database Management System,RDBMS)。这个看法当然是正确的,但是这并没有说出它的全部实质。
更准确地说,SQL Sewer 2005是一个企业数据平台(Enterprise Data Platform)。它提供了许多新的功能,还有一些功能在前代产品的基础上有所增强和改进。除了传统的RDBMS功能,SQL Sewer 2005还提供了丰富的报表能力、强大的数据分析能力,以及数据挖掘能力;当然还有支持异步数据应用的功能、数据驱动事件通知,以及其他更多的功能。
本书将主要讲述数据库引擎的管理。然而,如上文所述,SQL Server 2005拥有的功能比一个普通关系引擎具有的功能多得多。鉴于此,我们有必要先进行简单的入门介绍。在这一章中我们将介绍SQL Server 2005的功能。虽然我们不会提到所有的功能,但是会提供给读者一些背景资料,从而为他们理解本书其他部分的内容提供一些帮助。
之后的章节将深入进行细节探讨,论述每个功能背后的相关技术,以及它们怎样影响数据库管理员。SQL Sewer 2005不是那种仅靠一本书就能够将其所有功能详述殆尽的软件产品。因此,有些功能本书只能够简要地做个介绍,但是它的核心的管理功能将会被详细讲述。
1.1.1 数据库引擎
数据库引擎是SQL Server 2005的一个主要组件。它是SQL Sewer的联机事务处理(Online Analytical Processing,OLTP)引擎,它的功能在2005版中得到了极大的改进和增强。数据库引擎是一个高性能的组件,它负责有效地存储、检索,以及操作相关格式的数据和XML格式数据。
SQL Server 2005的数据库引擎为事务处理作了高度的优化,在复杂的数据检索操作中也有杰出的性能表现。数据库引擎同时还负责通过其**子系统管理受控访问和数据修改。SQL Server 2005的数据库引擎��行了许多大的改进,这些改进用于支持扩展性、可用性、以及**(也是**的)编程对象:
·表和索引的物理分区——通过多个物理文件组成的多文件组,表和索引现在可以行物理分区。这极大地改进了对大型的表执行数据检索操作和维护任务时的性能。
(更多信息请参见第5章)
·数据定义语言(Data Definition Languages,DDL)触发器——在执行DDL类型语句时,DDL触发器可以用来执行命令和过程。过去如果要想发现对数据库所作的修改,只有在它们导致应用程序执行失败时才能够检测。使用DDL触发器之后,所有操作的历史都可以轻松地记录下来,甚至可以防止这些操作的发生。DDL触发器可以被放置在服务器或者数据库层级上。
·增强的可变长度数据类型——varchar、nvarchar和varbinary数据类型中添加了一个新的MAX关键字,它允许分配高达2GB的空间给大型对象变量。其主要优点之一则是在声明中可以使用大型的值类型和变量。
·XML数据类型——新的XML数据类型可以用于存储结构良好的和符合构架的XML数据。它同时还以XML数据类型方法的形式提供了详细的支持,并强化了OPENXML和FOR XML T.SQL命令。
·多个活动结果集(MARS)——MARS可以使客户端在每个连接上维持一个以上的数据请求。比如说在以前,如果一个应用程序打开了一个连接,那么数据库中只能打开一个数据读取器进行数据检索。若要打开另一个数据读取器,就只有先关闭**个。有了MARS的话就没有这个限制了。
·结构化的错误处理——T—SQL现在能够使用TRY和CATCH命令执行结构化的错误处理,无需多次检查脚本中的错误,同时它还可以漂亮地处理任何实际发生的错误。
·普通表表达式(Common Table Expressions,CTE)——通过加入使用CTE对象的功能,Microsoft扩展了美国**标准机构(American National Standard Institute,ANSI)的T—SQL依从性。在创建有效的查询时,CTE相当有用。它无需使用冗长而复杂的递归子查询即可反馈层级信息。
·增强的**性能——SQL Server的**体系结构得到了强化,现在它可以在用户登录SQL Server时强制执行账户策略。其他有关**增强措施的改进还包括对执行环境的控制、创建加密密匙和设立控制访问的证书,以及通过使用数字签名保证数据库对象的完整性。更多信息请参见第6章。
·集成公共语言运行时(CLR)——SQL Server*激动人心的新增功能之一就是集成了CLR功能。它可能也是被误解*多的功能。CLR为托管代码提供了一个托管环境。由此您就不再需要使用托管代码编写和编辑难以管理的扩展存储过程,也不再需要由其访问外部应用编程接口(Application Programming Interfaces,API)以执行**的和可编程的函数。由于CLR已被集成在数据库引擎中,因此数据库开发人员现在可以使用**C#和/或.NET Framework中的VB.NET功能创建**而可靠的存储过程、函数、触发器、聚合,以及数据类型。但是CLR并没有让T—SQL无用武之地,因为在传统的关系数据处理中,T—SQL仍然胜过托管代码。能够从使用CLR中受益的地方都需要复杂的数学函数或者包含有复杂的字符串逻辑。在第12章中有关于CLR的简介。
提示:
要想全面深入了解CLR,可以参考Derek Comingore撰著的Professional SQL Server 2005 CLR Stored Procedures,Functions,and Triggers。
1.1.2 分析服务
分析服务包括联机分析处理(OLAP)和为商业智能应用而设的数据挖掘功能。顾名思义,分析服务提供了一个非常强大的环境以仔细地分析数据。它是通过用户创建的多维数据构架实现这一功能的。该数据构架包含来自于多数据源(比如说关系数据库、电子表格、文本文件,甚至其他多维来源)的非规范化的和聚合的数据。
分析服务的数据挖掘组件使我们能够进行大量的数据分析。该种数据可以从数据分析员感兴趣的隐藏关系和模式中“挖掘”出来。例如,网上书店分析您对书籍的搜索和购买意愿,并将它们与之前顾客的搜索和购买模式相比较,然后据此向您提出建议或是有针对性的推销广告。再比如,这也可以用于使癌症研究小组把癌症病人的人口数据和健康记录作比较,从而找到某种特定癌症的一般发病规律模式。
提示:
要想深入了解SQL Server 2005分析服务,您可以参考Sivakumar Harinath和Stephen R.Quinn所著的Professional SQL Server Analysis Services 2005 with MDX(Indianapolis:Wrox出版社,2006)。
1.1.3 报表服务
报表服务是一个基于Web服务的解决方案,用于设计、部署、管理灵活动态的基于Web的报表,以及传统的纸质报表。这些报表包含几乎所有数据源的信息。由于报表服务是一个Web服务,因此它必须被安装在一台具有IIS的服务器上。然而,IIS并不一定要安装在SQL Server上。虽然SQL Server 2005是报表服务数据库的主机,但是Web服务自身却可以被配置在另一台服务器上。
提示:
想要了解SQL Server 2005报表服务的详细描述和如何执行与扩展SQL Server 2005报表的信息,可以参考Professional SQL Server 2005 Reporting Services(Indianapolis:Wrox出版社,2006)/这_本书。这本**的书由四位天才的开发人员写成,他们也是颇有私交的好朋友:Paul Turley、Todd Bryant、James Counihan和Dave DuVamey。在过去几年中,我和他们共事得非常愉快。您**不会对此书失望的。
1.1.4集成服务
SQL Server集成服务(SQL Server Integration Services,SSIS)是Microsoft新的企业类数据抽取、转换和加载(Extract,Transform,and Load,ETL)平台。SSIS是基于SQL Server 2000中的数据转换服务(Data Transformation Services,DTS)开发的全新产品。和其前代相比,SSIS提供了更为丰富的功能集,并能够创建更强大更灵活的数据转换。但是这种巨大的进步也不是没有代价的。SSIS是一个相当复杂的工具,它提供的设计范式完全不同于DTS。熟悉使用DTS的数据库管理员通常会感到新的SSIS难以上手。他们*大的错误就是认为集成服务仅仅是DTS的一个升级版本而已。如前所述,事实并非如此。想要有效地使用SSIS,您需要更多地研究、准备和培训,这些是至关重要的。第13章对SSIS有一个入门介绍。
提示:
您可以阅读Professional SQL Server 2005 Integration Services(Indianapolis:Wiley,2006),该书对SQL Server2005的这项新功能进行了全面深入的讨论。
1.1.5 通知服务
通知服务用以构建和部署支持生成和发送数据驱动通知的应用程序。通知服务的应用程序可以允许订阅者创建对某一特殊事件的订阅,这个特殊事件可以是数据库、文件系统、或者其他的编程事件。通知可以用电子邮件或者其他定制的传送方式进行发送。更多信息请参见第l4章。
1.1.6 Service Broker
Service Broker为创建异步的、松散耦合的应用程序提供了架构和服务。Service Broker在数据层中实现了一个面向服务的体系结构(Service Orientated Architecture,SOA)。和其他SOA执行工具——比如说Microsoft消息队列(MSMQ)相比,它提供了更多受控的基于事务的通信。Service Broker是开发人员用来创建服务于某一特殊任务的数据库应用程序,它还允许与执行相关(但断开连接的)任务的其他应用程序进行异步通信。更多信息请参见第15章。
1.1.7数据层Web服务
SQL Server 2005支持直接通过HTTP创建并发布数据层对象,而不再需要使用一个Internet信息服务(Internet Information Services,ns)服务器。SQL Server 2005可以监听并响应一个HTTP端口,由此开发人员可以创建与数据库进行交互的应用程序,它们通过Internet或者使用一个Web服务穿过防火墙进行通信。更多信息参阅第7章。
1.1.8 复制服务
对于将数据及数据库对象从一个数据库或服务器复制并分布到另一个数据库或服务器,SQL Server2005复制服务可以进行自动操作和计划,同时还可以确保数据的完整性和一致性。SQL Server 2005中复制得到了增强,包含了对等复制、通过HTTP复制、复制架构改变的能力,以及一个很有趣的功能——把Oracle服务器配置成一个复制发布者。
1.1.9 多实例
SQL Server 2005可以在一台计算机上安装数据库应用程序的多个实例。根据安装的SQL Server版本的不同,*多可以安装50个实例。这项功能使得一个高性能的服务器可以驻留SQL Server服务的多个实例,并且每一个都有各自独立的配置和数据库。每一个实例都可以被独立管理和控制,不会产生相互之间的依赖关系。
1.1.10 数据库邮件
过去,若要协助出于管理和编程目的而发出的电子邮件和寻呼机通知,SQL Server都要依靠配置在服务器上的MAPI(Messaging Application Programming Interface,传输应用编程接口)邮件客户端进行。从本质上来说,这意味着要想完全使用管理通知,管理员就需要在服务器上安装Outlook或者其他依从于MAPI的客户端,然后为服务账户创建一个邮件配置文件,之后才可以使用。
很多组织都想利用SQL Server代理通过电子邮件发送作业和事件通知,但是又不愿意把不必要且有潜在风险的软件安装在生产服务器上。有了SQL Server 2005数据库邮件功能,您就没有必要这么做了:对于所有的邮件通信,它都支持简单邮件传输协议(Simple Mail Transfer-Protocol,SMTP)。而且数据库里还可以创建多个邮件配置文件,这样就能支持多数据库应用程序。有关数据库邮件的更多信息请参见第8章。
……