图书前言

前    言

  欢迎你,程序开发人员!

  您手中拿着的这本书和Microsoft SQL Server 2008本身非常相似,都有一个非常优秀的“先前版本”。从体系结构上来说,SQL Server 2005是该产品先前版本的一个突破性升级,本书的2005版也是一本全新的纸质资源,全面涵盖了这个经过全面升级的平台。本书对上一版中最重要的主题进行了全面升级,还新增了SQL Server 2008中所有为程序开发人员提供的令人激动的强大新功能。和2005版本一样,我们致力于为那些需要使用SQL Server 2008进行编程的开发人员提供最优秀的书籍,使他们能够使用各种方式进行编程。

  为了更好地理解我们的方法,请将SQL Server 2008比作一份星期天报纸。一份星期天报纸由多个专栏组成,每个专栏都是单独撰写,并且吸引截然不同的读者。这些专栏的确有一些重叠内容,并共享一些读者群,但是,大多数人都不会阅读整份报纸,他们也不需要那样做。同时,整份报纸被看作一份出版物,阅读这份报纸的读者认为自己是整份报纸的读者,而不只是其中一个或多个专栏的读者。与此类似,SQL Server也有许多组成部分,很少有人会使用所有这些内容,人们需要根据业务的需要,随着时间的推移逐步学习它们。

  本书反映了这一事实,在许多方面借用了星期天报纸的结构。首先,大量作者参与了本书的编写,他们就特定主题在特定章节中发表自己的专家意见。其次,某些章节的行文与其他章节截然不同。一些章节深入地介绍了特定主题,而另外一些章节则提供了更多的材料,在更高层次上进行介绍。在我们开始编写本书的2005版时,并不希望采用这一方式。但在完成该书时,我们发现这是我们能够找到的最有效方法,也是我们在这一SQL Server 2008新版本中要继续沿用的一种方法。我们已经发现这种方法使这样一个庞大的技术组合更易于学习,也使学习过程更具模块化。

  没错,本书的整体印象是综合性强——研究SQL Server 2008的各种可编程特性,而且在研究过程中,提供了有关该产品大多数特性的广泛介绍,在一定程度上满足了程序开发人员的需要。无论您是阅读本书的所有章节,还是只阅读其中的一部分,无论是按顺序阅读本书,还是随意阅读,我们的目标都是为您提供实用信息和大量有用的示例。本书既有概要性介绍,也有深入的讨论,开发人员可根据需要选择阅读。

  就像星期天报纸不会介绍世界上发生的所有事情一样,本书也不会向您讲授SQL Server的所有内容。例如,我们没有介绍高可用性/容错特性,例如,复制、群集或数据库镜像。我们不会讨论查询规划与优化,也不会提供有关SQL Server Profiler(事件探查器)、SQL Trace或Database Engine Tuning Advisor(数据库引擎优化顾问)的详尽细节。一些在2005版中已经涵盖的功能在SQL Server 2008中并没有显著变化,例如,本机XML Web服务、Service Broker、Integration Services和跨层调试,因此本书未涉及这些主题,以便为SQL Server 2008的新功能留出空间。(您可以从本书配套网站上下载包含这些主题的2005版本相关章节,具体参见前言末尾的说明。)

  在编写本书时,我们发现,要想涵盖本产品的所有内容,会使本书过于庞大,令人难以接受。我们希望我们实现了最佳平衡:提供了大量的“可吸收”信息,既有足够的开发细节,也有对其他资料的足够引用,以帮助您成为一位熟练的SQL Server专家。

读 者 对 象

  介绍了本书内容和本书不包含的主题之后,我们希望能够说明本书的读者对象,以及本书最适合哪些读者阅读。简单地说,本书的读者对象是那些在业务逻辑层/中间层以及应用程序级别使用数据库和数据访问的.NET与SQL Server开发人员。

  就我们对开发领域的观点(这种观点可能有些主观)而言,我们认为这一读者群实际上包含大多数.NET开发人员,但很明显,相对于其他开发人员来说,一部分开发人员通常对数据库编程更感兴趣,特别是SQL Server编程。这部分开发人员是本书最适合的读者群。

  我们假定您拥有以下基本的工作知识:在客户端使用C#进行.NET编程,在服务器端使用Transact-SQL(T-SQL),当然,具有在任意其他平台上的SQL经验也是可以的。我们还假定您对于下列操作驾轻就熟:在服务器上创建表、视图及存储过程。对于客户端工具,我们假定您熟悉SQL Server的以前版本和.NET开发工具。如果您已经使用过SQL Server 2005中的SQL Server Management Studio,那对于2008版本会感到非常熟悉,后者已经对其进行了扩充,以支持新的服务器功能(现在甚至包含了IntelliSense for T-SQL!)。如果您仍在运行SQL Server 2000或更早版本,您一定会非常欣赏SQL Server Management Studio,因为它相对于之前的两个主要工具(Enterprise Manager和Query Analyzer)有了显著改进。SQL Server Management Studio基本上是这两个工具的融合,将它们包装在一个现代的用户界面(UI)外壳中,非常类似于Microsoft Visual Studio中提供的界面——包括可定制的菜单与工具栏,可以浮动的和停靠的窗格,解决方案和项目。.NET开发的主要工具当然是Visual Studio 2008,您使用任何版本所获得的经验也都是有益的。

  前面已经说了很多,其实关于预备知识的要求非常宽松。例如,如果您只是初步涉猎过SQL和.NET,那也可以,只要您愿意在阅读时尝试和熟悉这些内容就行。大多数的代码示例都不是非常复杂。但是,我们在进行解释时是假定您具有一些基础知识的,如果您缺少相关经验,可能需要进行一点研究。

注意  为保持一致性,本书中的所有.NET代码都是以C#编写的。(唯一的例外是第19章中关于Reporting Services的代码,因为在编写脚本报表表达式和部署时,只支持Visual Basic .NET。)但是,本书绝对不是面向C#的,所提供的.NET代码中当然也没有专属于C#的内容。就像前面刚刚提到的那样,这些代码示例都不是非常复杂,如果您对Visual Basic .NET的经验多于C#经验,在阅读这些C#代码时,应当很容易地将其翻译为Visual Basic .NET。

  除了介绍SQL Server核心关系引擎、其最新的“超越关系”功能及其附属服务之外,本书还深入介绍了SQL Server的商业智能特性,包括Reporting Services和Analysis Services的联机分析处理(OLAP)与数据挖掘组件。尽管本书在本质上不是一本介绍商业智能的书籍,但它是一本数据库开发人员书籍,我们强烈地感受到,主流数据库开发人员应当理解所有这些特性。商业智能真的是SQL Server 2008的基石特性之一,所以传统开发人员应当现在“转移”到商业智能领域。

  对于许多读者来说,这些技术(特别是OLAP与数据挖掘)都是新内容,我们意识到这一点,所以假定您不具备相关知识。任何具有前述预备知识的读者都可以很轻松地阅读有关这些商业智能特性的内容,而且在阅读专门介绍商业智能的章节之后,能够而且会急于开始使用商业智能。

本 书 内 容

  本书分为4个部分。每一部分介绍一个特定的SQL Server主题。

  第I部分以概述作为开始,简要说明本书4个部分中各章的内容。然后深入研究SQL Server的核心技术。我们还研究了对Transact-SQL(T-SQL)的许多强大改进,包括SQL Server 2005和2008两个版本中的改进(按2005、2008顺序给出)。我们还介绍SQL Server的.NET公共语言运行时(CLR)集成功能,这一部分内容分布在对数据类型和服务器端编程的讨论中。您将学习如何使用“服务器管理对象”(SMO)以编程方式管理服务器,这一功能是在SQL Server 2005中引入的,还将学习如何使用SQL Server 2008的“基于策略的管理”(PBM)新管理框架。之后我们再来讨论安全性。在快速介绍了基本的SQL Server安全性概念之后,我们将说明如何在传输(经由网络传输)和静止(在磁盘上)两种状态下加密数据。我们还将讲解SQL Server 2008中的最新安全功能,包括透明数据加密(TDE)和SQL Server审核,在当今充满规章制度的世界上,您会发现这些功能极为有用。

  第II部分专门介绍SQL Server 2008关系技术之外的主题,这些主题都是关于处理半结构化数据和非结构化数据的。针对可以使用SQL Server管理、查询和操作的所有不同数据类型,这一概念使我们开辟新思路,拓宽了传统的关系数据库观念。首先是关于XML支持(最早在SQL Server 2005中引入)的一章,并全面包含了SQL Server 2008中所进行的最新XML改进。第II部分的其余各章介绍SQL Server 2008中的全新非关系功能。这些功能的设计目的是将崭新的智能与编程便利性下放到数据库级别,从而充实了本机数据库引擎。

  在第III部分,我们不再讨论服务器,而是讨论有关实际数据库软件编程的概念,它们应当处于中间层或应用级别。内容包括使用“传统”ADO.NET、语言集成查询(LINQ)、ADO.NET实体框架及其最新创新、ADO.NET数据服务及SQL Server数据服务来进行数据访问。在成功地访问数据之后,需要将这些数据传递给用户,也就是数据绑定。我们将深入研究用于Microsoft Windows和ASP.NET Web应用程序的数据绑定,以及最新的UI平台、Windows Presentation Foundation(WPF)和Silverlight。我们还将介绍事务及利用各种技术来扩展数据库范围的其他相关主题,这些主题包括合并复制、Sync Services for ADO.NET以及使用SQL Server Compact 3.5进行的移动数据库应用开发。

  第IV部分介绍商业智能。在这一部分,介绍SQL Server Analysis Services和Reporting Services。我们对这一部分感到特别自豪,因为我们假定您基本上不具备商业智能知识或OLAP知识,但还是深入介绍了SQL Server商业智能概念、特性与编程。专门有一章介绍数据仓库主题。在该章中,您将会了解如何使用一项称为“更改数据捕获”(CDC)的SQL Server 2008新功能,方便大型数据仓库的增量更新。此外,我们介绍了SQL Server 2008中的所有新的重要商业智能功能,针对这些功能进行了扩展,包含了用于Microsoft Office Excel 2007中的最新数据挖掘加载项。针对经过修改和改进的“报表设计器”,重新编写了Reporting Services一章,还会向您讲授许多用于对Reporting Services进行编程和管理的方式。

  这4部分结合起来,为您介绍了SQL Server 2008中与开发人员相关的大量特性,以及理解这些特性所需要的概念性材料。我们没有涵盖SQL Server 2008中的所有内容,但我们为您介绍了大量的核心知识,并为您提供了进一步研究和学习这一产品所需要的参考资料框架。我们建议您只要有可能,就参考“SQL Server联机丛书”,它是有关SQL Server 2008的一个完整文档库。(可以选择“开始”|“程序”|Microsoft SQL Server 2008|“文档和教程”,打开联机丛书。)

代码示例和本书的配套网站

  书中所有示例代码都可从本书配套网站下载,网址如下:

  http://www.microsoft.com/mspress/companion/9780735625990/

重要提示  本书及其示例代码都是为2008年6月发布的SQL Server 2008开发人员版Release Candidate (RC0)版编写的,并在此版本上进行测试。如果我们发现与Release To Manufacturer(RTM)版本有任何不兼容内容,或者以后发布其他服务包,我们将更新示例代码,并在本书的配套网站张贴勘误提示,可由http://www.microsoft.com/mspress/companion/9780735625990/获得这些资料。请经常访问该网站以获得最新代码更新与勘误。

  除了所有的代码示例之外,本书的配套网站还包含本书2005版中的一些章节,这些章节未针对2008版进行更新。其中包括有关本机XML Web服务和Service Broker的章节,这些功能自从在SQL Server 2005中引入之后并未被广泛采用,但在SQL Server 2008中继续对其提供支持。配套网站上还有2005版本中介绍以下内容的章节:SQL Server Management Studio (在大多数数据库工作中将会使用的主要图形化工具)、SQL Server 2005 Express Edition、Integration Services和调试。由于包含了SQL Server 2008中的所有新内容,出于篇幅限制而不允许我们在这一新版中包含这些主题(它们在SQL Server 2008中没有明显改变)。尽管我们全面地涵盖了最新的数据绑定技术,但2005版中介绍了针对当时最新SQL Server功能的ADO.NET编程技术,所以也将其张贴在配套网站上。本书中有关OLAP应用程序开发的章节已经进行了修订,以包含Excel 2007内容,对于那些仍在依靠Analysis Service OLAP多维数据集使用Excel 2003的开发人员,可以从配套网站上下载2005版。

  因为这是一本开发人员书籍,所以除了包含T-SQL或Analysis Services脚本文件的SQL Server Management Studio项目之外,还经常包括一个或多个Visual Studio项目,作为示例代码的一部分。在配套材料的父文件夹中,是每一章的子文件夹。每一章的文件夹又包含以下两个文件夹或其中的一个:SSMS与VS。SSMS通常包含一个SQL Server Management Studio解决方案(.ssmssln文件);VS通常包含一个Visual Studio解决方案(.sln文件)。在安装这些配套文件之后,双击一个解决方案文件,即可在对应的集成开发环境(IDE)中打开示例脚本或代码。

  因为在正文中对大多数代码进行了解释,所以您可能更愿意从头创建这些代码,而不是打开配套示例代码中提供的最终版本。但是,如果在创建代码时犯了一些小错误,或者希望快速执行该代码,而不需要通读对代码进行描述的正文,那么这些最终版本仍然是有用的。

  一些SQL Server Management Studio项目中包含嵌入式连接,这些连接被配置为指向在本地计算机上运行的默认SQL Server实例。与此类似,一些Visual Studio源代码包含连接或默认连接字符串(有时是代码,有时是设置或配置文件,有时则是在示例项目中窗体上控件的Text属性),它们的配置类似。如果在本地计算机上安装了SQL Server 2008默认实例,并安装了Windows集成安全性和AdventureWorks2008示例数据库,那么大部分示例代码无需修改即可运行。如果未如此安装,则需要根据具体环境相应地修改服务器名称、实例名称或用户凭据。如果尚未安装AdventureWorks2008,则应当立即着手安装。(在前文中给出了所有示例数据库的下载说明。)

  一些章节需要可用于SQL Server的流行示例数据库。它们包括Northwind和刚刚提到的AdventureWorks2008示例事务数据库、AdventureWorksDW2008示例数据仓库数据库以及Adventure Works DW 2008 Analysis Services示例数据库。这些例子都没有用pubs数据库, SQL Server 2000之前的版本则应用较多。

使用Northwind示例数据库

  如果您有SQL Server 2000提供的Northwind版本,可以使用它,将其连接到SQL Server 2008服务器。微软已经发布了一个Windows Installer文件(.msi),该文件会将Northwind示例数据库安装在服务器上(甚至包含较旧的pubs示例数据库)。此安装文件既提供了主数据库文件,还提供了可以被直接连接的日志文件以及T-SQL脚本,可以执行该脚本,以从头创建该数据库。在本书出版时,Northwind安装文件的下载网址为http://www.microsoft.com/ downloads/details.aspx?FamilyID=06616212-0356-46a0-8da2-eebc53a68034&DisplayLang=en。在本章示例代码中包含这一URL的互联网快捷方式。如果该链接无效,请尝试在网络上搜索“Northwind and pubs Sample Databases for SQL Server 2000”。

使用AdventureWorks2008示例数据库

  从SQL Server 2005开始,微软就提供ADventureWorks系列数据库,并针对SQL Server 2008进行了升级。可以从CodePlex下载这些示例数据库,CodePlex是微软的开放源代码网站(事实上,微软的所有官方产品代码示例都托管在CodePlex上)。本书使用AdventureWorks2008关系联机事务处理(OLTP)数据库、AdventureWorksDW2008关系数据仓库数据库和AdventureWorksAS2008 Analysis Services数据库。这些示例数据库的最新版本被设计为仅能在SQL Server 2008中使用,不能与SQL Server 2005一起工作。(但是在编写本书时,可以从CodePlex下载用于SQL Server 2005的较早AdventureWorks数据库。)

  在本书出版时,所有AdventureWorksAS2008示例数据库的下载网址为http://www. codeplex.com/MSFTDBProdSamples。选择该网页上的Releases选项卡,然后选择任意示例数据库,下载到您的计算机上。本书配套网站包含这一URL的互联网快捷方式。如果该链接无效,请尝试在网络上搜索“SQL Server 2008 product sample databases”。

  AdventureWorks2008 OLTP数据库使用了SQL Server 2008中的新FILESTREAM功能,因此需要在安装AdventureWorks2008的实例中启用FILESTREAM。第8章专门介绍FILESTREAM,8.4节将介绍如何启用FILESTREAM,以支持AdventureWorks2008。

重要提示  本书的示例基于AdventureWorks2008示例数据库的32位版本,32位版本几乎与64位版本相同,但并非完全相同。如果您正在使用这些示例数据库的64位版本,查询结果可能会与本书示例稍有不同。

系 统 要 求

  为了能够顺利阅读本书正文并成功执行示例代码,建议在计算机上安装SQL Server 2008的开发人员版本,很多开发人员可以通过微软的MSDN Premium订购来获得这一版本。此外还需要Visual Studio 2008,我们建议您使用专业版或团队版,这些版本都可以通过MSDN Premium订购产品的相应版本获得。

重要提示  为了尽量多介绍特性,本书使用的是SQL Server 2008开发人员版本。开发人员版本拥有的特性与该产品的企业版本相同,但开发人员版本的许可条款中排除了生产使用。两个版本都是高端平台,提供了其他版本(标准版、工作组版和Express版)中可用特性的扩展集。我们相信开发人员希望我们能够涵盖SQL Server 2008中的所有开发人员特性,包括那些仅能在企业版和开发人员版中使用的特性。

本书涵盖的大多数可编程特性在SQL Server 2008的所有版本中均可使用。值得注意的例外之处是工作组版、Web版和Express版中不支持Analysis Services。如果用户使用的生产版本不是企业版,要想了解在生产过程中可以使用本书介绍的哪些特性,应当访问SQL Server 2008 Features Comparison网页(http:// msdn.microsoft.com/en-us/library/cc645993.aspx),获得每一版本中可用特性的详尽清单。

  为了运行SQL Server和Visual Studio的这些版本,从而运行本书中的示例代码,您将需要以下32位硬件和软件(64位硬件与软件需求未在此处列出,但它们非常类似)。

* 600 MHz Pentium III兼容处理器或更快速的处理器(处理器主频为最低1 GHz,但建议使用2 GHz或更快速的处理器)。

* Microsoft Windows 2000,并安装Server Service Pack (SP) 4或更新版本;Windows 2000标准版,并安装SP4或更新版本;Windows XP,并安装SP2或更新版本;Windows Server 2003(任意版本),并安装SP1或更新版本;或者Windows Small Business Server 2003,并安装SP1或更新版本;Windows Server 2008(任意版本)。

* 对于SQL Server 2008,至少需要512 MB内存(建议使用1 GB或更多)。

* 对于Visual Studio 2008,至少需要192 MB内存(建议使用256 MB)。

* 对于SQL Server 2008,建议安装方式大约需要1460 MB可用硬盘空间。“SQL Server联机丛书”大约另外需要200 MB硬盘空间。

* 对于Visual Studio 2008,系统硬盘驱动器上需要最大20 GB可用空间,其中包括安装全套MSDN文档的空间。

* 互联网连接,用于从配套网站下载每一章的示例代码。有些代码示例的运行还需要互联网连接。

* CD-ROM或DVD-ROM光盘驱动器。

* Super VGA(1024×768)或更高分辨率的视频适配器与监视器。

* 微软鼠标或兼容的指点装置。

* Microsoft Internet Explorer 6.0 SP1或更新版本。建议使用Microsoft Internet Explorer 7.0。

* 对于SQL Server Reporting Services,需要Microsoft Internet信息服务(IIS) 6.0或更新版本以及ASP.NET 2.0或更新版本。

支 持 信 息

  我们已经尽力确保本书及配套内容的准确性。一旦收集到勘误或修改,会将它们添加到微软知识库文章中。

  微软出版社在以下网站提供对书籍及配套内容的支持:

  http://www.microsoft.com/learning/support/books/

问题与评价

  如果您要对本书或配套内容进行评论或有什么观点,或者在访问以上网站后仍然有一些未能解答的问题,请通过电子邮件将它们发送给微软出版社:

  mspinput@microsoft.com

或者通过邮政信件发送到以下地址:

  Microsoft Press

  Attn: Programming Microsoft SQL Server 2008 Editor

  One Microsoft Way

  Redmond, WA 98052-6399

  请注意,以上地址不提供对微软软件产品的支持。