前 言
这是一个漫长的过程。自20世纪80年代后期SQL Server首次发布以来,SQL Server 2005是历经版本更新时间最长的一个产品。即便是对SQL Server进行完全改写的7.0版,也只历时3年半而已,而我们等待SQL Server 2005却用了5年多时间。
有些东西是值得等待的,SQL Server 2005正是这样一个值得我们等待的产品。新增或改写的功能在数量和价值上令人惊叹。然而,本书并非一本讲述大量新鲜特性(what’s new)的书,它的目的是非常广泛地理解SQL Server 2005,这个目前市场上最庞大、功能最多样的产品之一。或许更重要的是,本书的目的是理解如何开发系统和应用程序,使其既符合性能需求,又能以一种保持数据合理可用的同时维护数据完整性的方式来存储数据。
对于阅读过本书前一版本的读者,现在会觉得有一些不同。本书对初级的内容作了精简,以回顾的方式进行讲述。这样做的原因是在本书的之前版本中出现了一个问题,即书的内容太多以致不能够装订成一本书。
除此之外,本书保持了其一贯的风格和内容形式。书中涵盖的内容从初级到相对高级,讲述了大多数的附加服务、高级编程结构(如很受追捧的.NET程序集)以及一部分支持的对象模型(可用于对SQL Server及其各种引擎的管理)。
版本
本书是针对SQL Server 2005编写的,不过,书中也追溯了一些之前版本的内容,并且严密关注了与SQL Server 2000甚至SQL Server 7.0相关的向后兼容性问题。至于SQL Server 6.5,由于它太陈旧了,书中几乎不会涉及该版本。(简言之,在写本书时,6.5已经过时将近7年了,而且已经在相当一段时间里得不到支持,快进入到21世纪来吧!)
或许有人会自问,“我手里已经有了关于SQL Server 2000的书,为什么要购买SQL Server 2005的书呢,SQL Server 2005真的有那么大的改变吗?”那么,就来看看吧。
与SQL Sever 2000相比,SQL Server 2005引入了大量的新功能并做了许多改进。SQL Server 2005对Data Transformation Services进行了彻底的改写,并将其更名为SQL Server Integration Services。另外,也对Analysis Manager做了完全改写。加入了新的Reporting Services引擎(尽管其中一些功能可以下载已有一段时间)。为所有这3个工具添加了新的、统一的设计环境(这里所谓的“新”是相对而言的,因为实际上只是利用了Visual Studio)。新的Notification Services引擎允许在服务器上订阅可定制的事件,甚至允许订阅特定的数据活动。全文引擎紧密集成到了核心数据库引擎中。值得注意的改变已经够多的了,而那些还只是服务级别的改变而已!
.NET语言集成、用于T-SQL的错误处理程序、PIVOT表以及作为可索引的核心数据类型的XML,这一系列核心数据库环境中的改变令人眼花缭乱。因此,在介绍SQL Server 2000的书中,我可能只会在你需要新功能时,告诉你从SQL Server 7.0到SQL Server 2000有哪些更新。然而,这次的改变是如此广泛(历经5年的等待,也应当有这样大的改变),以至于你可能需要更新整本书。
读者对象
阅读本书,你应当已经具备一些SQL Server的经验,并准备进一步提高。此外,本书主要面向较高层次的开发者。
最开始几章的内容相对初级,我们将快速掠过这些内容,这也使得这几章更像是参考资料——当你遗忘时(所有人都会有这样的时候),作查询回顾之用。高层次的读者可以略过前几章,直接进入第7章或第8章。精通SQL Sever的读者可能需要特别关注有关.NET的章节,以及大约第14章以后的所有章节。
涵盖内容
本书是关于SQL Server的书。更确切地说,本书的重点是SQL Server上的开发。大多数的概念与所使用的客户端语言无关,尽管本书中利用了客户端语言的例子更多地使用了C#语言(有些例子以多种语言给出)。
对于那些从SQL Server早期版本迁移而来的读者,当产品的版本差异会产生问题,不可避免地导致一些“陷阱”时,我们会详加讨论。
本书结构
与我的所有其他书一样,本书多少带些自由放任的写作风格。本书的结构相对松散。每一章的开头先说明本章要阐释的内容,然后进行详细讲述。讲述每一个主题时,先给出一些背景,接着在适当的时候完成一个例子。书中的例子通常比较精简,但对于所讨论的主题,这些例子能够让你迅速地理解其中涉及的概念。
虽然本书是中高层次的书,但为了叙述完整,我们会先快速带过一些初级的内容以强化基础概念,并介绍了当前版本SQL Server的所有变动;然后,讲述一些中级的概念,最后是SQL Server中更高级的或一些相关的概念。
反馈
我尽力把书写得平易近人,在保持适当进度的同时,努力不让内容难于理解。在这一点上,我认为自己做得还算成功。不过,你如果有这样或那样的想法,欢迎发邮件来告诉我。我非常希望能获得有建设性的意见,这些意见最终将有助于本书以后的版本。你可以通过电子邮件(robv@ professionalsql.com)与我联系,或者直接在我的网站(professionalsql.com)与我交流。
当你发现书中的错误时,请按下面“勘误表”中所给出的方式提交给Wrox,他们会有专人负责整理。
另外,请你理解,虽然我尽量争取,但不能保证回复所有的问题。因此,对于并非明确与本书有关的、一般性的SQL问题,请求助于Usenet上的SQL Server新闻组或SQL Server门户站点。
阅读本书所需的条件
虽然本书中的很多代码可以在SQL Server的免费版本上运行(不过至少应该安装SP1),但是,很多例子要用到SQL Server Management Studio,并且书中的屏幕截图通常是基于你拥有完全许可这一假定而来的。除了对于SQL Server的要求之外,在本书的核心编程部分,有时需要Visual Studio 2005或更高的版本。尽管本书的基础部分不需要Visual Studio,但在一些关于调试以及所有关于.NET和SMO的讲述中,将需要Visual Studio。
最后但并非最不重要的是,你的SQL Server需要运行在Windows Server 2003或更新版本上,以便能使用本书中讨论的所有功能(尽管大多数功能在Windows XP上运行得很好)。
本书约定
为了帮助读者更充分地利用本书,方便阅读,我们在本书中采用如下约定:
在这样的矩形框中给出的内容都是重要的、不应忘记的信息,它与周围的内容直接相关。
对当前讨论的主题可能有一些提示、技巧和旁注,这些都将用楷体显示。
正文中还包括以下样式。
l 在初次介绍重要术语时,使用楷体突出强调。
l 用Ctrl+A这样的形式说明键盘按键。
l 正文中的代码使用Courier字体显示。
l 代码有两种形式:
代码示例中,新出现的代码或重要代码用灰色背景突出显示;
对当前讨论不太重要的代码或者是前面已经出现过的代码不用灰色背景强调。
源代码
在使用本书中的例子时,你可以手工键入所有代码,也可以直接使用本书在网上随附的源代码文件。本书中用到的所有源代码文件都可以从www.wrox.com下载。访问Wrox网站时,只要找到本书的英文版书名(Professional SQL Server 2005 Programming)[可以使用Search(搜索)框,也可以使用某个书目列表],并点击该书详细信息网页上的Download Code(下载代码)链接,就可以得到本书的所有源代码。
由于会有许多书名字类似,最佳的方法是利用ISBN搜索,本书的英文版ISBN是0-7645-8434-3。(到2007年1月,随着业界13位ISBN的逐步采用,本书的ISBN将变为978-0-7645-8434-3)。
下载代码之后,你只需用最惯用的压缩工具解压就可以了。此外,还可以在Wrox的主下载页http://www.wrox.com/dynamic/books/download.aspx处找到本书及其他Wrox出版的书的配套代码。
勘误表
我们一直努力确保代码或正文中没有错误。不过,是人都会犯错误。如果你发现了我们出版的书中的错误,不论是拼写错误还是代码错误,都请告知我们,我们将非常感谢。这样能节省其他读者的时间,同时还能帮助我们提高内容的确定性。
http://www.wrox.com处,用Search框或名字列表找到本书的名字,然后在本书的主页面上点击Book Errata链接,可以找到本书的勘误表。在这个页面上可以找到由Wrox的编辑发布的、已经发现的所有错误。在www.wrox.com/misc-pages/booklist.shtml处可以找到Wrox出版的所有书的列表,其中有每本书的勘误表的链接。
如果在Book Errata页面上没有找到你发现的错误,请访问www.wrox.com/contact/techsupport.shtml页面,填写其中的表单,把你发现的错误发送给我们。我们将检查你提交的信息,如果正确,就会把它发布在本书的勘误表页面上,并在本书以后的版本中纠正这一错误。
p2p.wrox.com
要与作者或其他人讨论有关问题,请加入P2P论坛(p2p.wrox.com)。这个论坛是一个基于Web的系统,你可以在此发表有关Wrox图书和相关技术的消息,并与其他读者和技术用户交流。论坛针对你感兴趣的主题提供订购功能,论坛新发布相关消息时,会通过电子邮件通知你。Wrox作者、编辑、其他行业专家以及其他读者也会造访这些论坛。
http://p2p.wrox.com上,你会看到许多论坛,这些论坛不仅可以帮助你阅读本书,还有助于你开发自己的应用程序。要想加入论坛,只需遵循以下几个步骤:
(1) 访问p2p.wrox.com,并点击Register(注册)链接;
(2) 阅读使用条文,并点击Agree(同意);
(3) 填写加入论坛的必要信息,如果想提供其他可选信息,也可以相应填写,点击Submit(提交);
(4) 你将收到一个电子邮件,其中说明如何验证你的账户,并完成加入过程。
如果只是阅读论坛中的消息,无需加入p2p;如果想发布自己的消息,就必须加入论坛。
一旦加入,就可以发布新的消息了,还可以对其他用户发布的消息做出响应。你在任何时刻都可以在Web上阅读消息。如果希望某个论坛能通过电子邮件向你发送新发布的消息,请点击论坛列表中该论坛名旁边的Subscribe to this Forum(订购此论坛)图标。
要了解如何使用Wrox p2p的更多信息,请阅读p2p FAQ,在此解释了这个论坛软件如何工作的相关问题,另外还回答了与p2p和Wrox图书有关的许多常见问题。要阅读FAQ,可以点击任何p2p页面上的FAQ链接。
致谢
自我的第一本关于SQL Server的书完成以来,已经过去将近6年了,我的生活发生了不少变化。我有不少人需要感谢。
首先,我要感谢我的孩子们,他们即使在我因这样或那样的事情而压力重重时,依然是那样快乐。现在,我终于能够告诉我最小的孩子“这本书大功告成了”,这真是太美好了。关于“何时能完成?”这个问题,她已经问了一年多了(我不确定她是否完全理解,这前前后后包含了两个这样的完成时间)。在本书的撰写过程中,她对我极富耐心。偶尔,为了跟我呆在一起,她会走进来并坐下,看着我写作。我想,我将会想念这样的时刻。只要看看那已经高中毕业的老大,就会让人感慨光阴荏苒。无疑,必须先对他们说声“谢谢”。
还要感谢你们——读者。你们写信告诉我,我帮助你们解决了一些问题。那曾是并将继续是我撰写另一本书的首要动力,这会使我拥有强大干劲。你们对于我的SQL Server系列图书的持续支持令我十分感动。我很高兴我们能心有灵犀。希望本书能让你们在SQL Server的学习上少遇挫折,并获得更大的成功。
此外,我还要特别感谢一些过去和现在相识的人。他们中的一些人在以前的Wrox Press工作,且很久没有联系了,然而,他们对于我的作者生涯影响很大,我需要一直记住他们。另一些人对我而言是新的伙伴,他们各具特色——有时只是表现了更多一点的耐心。
Kate Hall——虽然,在我前两本书结束的时候,她多半想要“杀”了我,但每次她总能设法在编辑的过程中引导我去创建更完美的书。我与Kate久未联系了,但作为真正帮我塑造写作生涯的人,她总是最特别的一位。我总是想把本书第一个致谢献给她。Kate,无论你在哪里,愿你应付自如、卓越出众。
Adaobi Obi Tulton——她今年的压力可真是够大的,因此对于因为我交稿延迟而给她带来的种种压力,我要对她致以歉意。要是我很富有,我可能会雇用Adaobi Obi Tulton为我的精神导师。虽然在截止期限上她的压力极大,但是在我见过的她所做的所有事情上,她总有办法表现出一种“平和”的态度——我应该学习这一点。
Bob Elliott——主要想说的就一句,“谢谢你的坚持”——他能明白我的意思。
Kevin Kent——他不得不在中间接过,并引领事情继续进展。
Dominic Shakeshaft——他是使我最初开始写作的人(近来我总是深夜也在忙于写作,或许我真不应该谢他J)。
Catherine Alexander——在我写第一本书时,她是Kate的得力战友,实际上对于这两本书,她的作用都极其重要。在我前两本书的写作和出版中,Catherine与Kate一样有着重要的影响。
John Mueller——他的工作吃力不讨好,是要找出我的错误。我自己做过技术编辑,要注意到那些微小的、被遗漏的,或者在某种方式上是错误的细节,并不是一份很轻松的工作。阅读其他人的写作风格,并要选择合适的时机说“你可能需要换种方式来处理”,或者就任由它这样,完成这些工作甚至更加困难。就这两点看,John做了很了不起的工作。
比起我之前的书,本书没有过多的参与者,但本书的整个写作过程如此之长,并涉及了许多的人,我必定会遗漏一两位没有感谢——如果你是被遗漏的人,请接受我最谦卑的歉意;并且,我保证你的帮助是受到珍视的。尽管如此,我还是要额外感谢一些人(他们在很久以前就对我有所影响),他们是:Paul Turley、Greg Beamer、Itzik Ben-Gan、Kalen Delaney、Fernando Guerrero和Gert Drapers,特别是Richard Waymire。






