引言
Introduction
我认为创作和出版一本书最大的乐趣是获得读者的反馈。最郁闷的事当然是收到读者们来信抱怨本书没有包含他们最关心的主题。然而经过再三考虑我认为自己必须接受的事实是这本书不能包揽一切,虽然我也希望它能够这样。SQL Server 2005是一个非常庞大、复杂的产品,我们即使使用多本专著也很难涵盖到它的每一个特性。我希望读者们能够把这本书看作一个半满而不是半空的杯子,并能够欣赏《Microsoft SQL Server 2005技术内幕》各册所包含的信息。至于没有涵盖到的一些主题,我希望读者们可以从其他地方获得所需的信息。
这部丛书所关注的焦点就隐含在其名字中,就是SQL Server的核心引擎,特别是查询处理器和存储引擎。这部丛书不会讨论客户端编程接口、异构查询和商业智能及复制。实际上大多数针对高可用性的特性本丛书都没有涉及,仅仅讨论了其中少数几个特性,例如镜像(当讨论数据库属性设置时会从上层架构对其进行描述)。这里也没有对一些内部操作例如安全性进行深入论述——这样的话我必须为该丛书再增撰十册,并且这在该产品的下一个版本发布之前是不可能完成的。
Microsoft SQL Server技术内幕丛书的历史
Microsoft SQL Server技术内幕的第一版是针对6.5版本而写的,它确实尝试了涵盖该产品的几乎所有特性。不过那时的产品规模相当小。另外当时也很少有关于该产品的其他书籍,所以原创作者(Ron Soukup)当时无法向读者推荐关于特定主题的其他书籍。尽管如此,第一卷也没有能够涵盖到每一个主题,包括复制和安全性。Ron也没有讨论备份和还原SQL Server数据库的细节,并且实际上也没有探讨事务日志的使用和管理。
从SQL Server 7.0开始我接管了这本书,并且因为整个存储引擎都已经改变了,所以我完全重写了描述存储引擎内部的各个部分。在SQL Server 7.0中,页面结构、索引组织和锁定资源的管理都与之前的版本完全不同。
《Microsoft SQL Server 7.0技术内幕》的其中一章对事务、存储过程和触发器进行了讨论。对SQL Server 2000版本,因为增加了针对用户定义函数的新特性和新的触发器功能,所以我将其分为两章。在7.0版本中,有一个庞大的章节讨论查询处理和调校,SQL Server 2000版本则将这些主题分为两章。其中一章是关于查询处理的内部实现和SQL Server优化器的工作机制,另一章则为如何编写性能更好的查询提供了指导。《Microsoft SQL Server 2000技术内幕》还涵盖了关于事务日志工作原理的许多细节,以及对备份和还原操作期间日志是如何使用的进行了深入讨论。
丛书结构
早在《Microsoft SQL Server 2005技术内幕》的策划阶段,我就意识到用一册书来涵盖我所希望的一切是不现实的。我最初的想法是用一册书来讨论存储引擎组件和实际的数据管理,用第二册来讨论如何使用T-SQL语言和优化查询。不久我就发现第二个主题实在太大以至于不能用一册书来完成,部分是因为SQL Server 2005提供了非常多的新的T-SQL特性。因为对新的编程结构的充分讨论需要单独一册书才能完成,所以我邀请了T-SQL大师Itzik Ben-Gan来创作一册针对SQL Server 2005的T-SQL专著。Itzik是一位多才的作家,在我尚未完成对存储引擎这册书的规划之前他就已经完成了500多页的内容。这时,他意识到T-SQL语言这个主题太大以至于需要两册书来涵盖所需要的内容。这样,《Microsoft SQL Server 2005技术内幕》就变成了一部四册的专著。
虽然我们的目标之一是尽量减少各册之间的重叠以便整套丛书的读者在阅读该丛书时不会读到重复的内容,但是我们意识到不是所有的读者都会从同一册开始阅读。因为Itzik和我使用不同的方法来描述SQL Server查询处理、索引使用和性能调校,所以实际上那些在多册书中被重复讨论的主题对帮助读者理解是相当有益的。
《Microsoft SQL Server 2005技术内幕:T-SQL查询》
T-SQL查询这册书描述了T-SQL查询语言的基本结构,并对逻辑的和物理的查询处理进行了彻底讨论。该书介绍了一套查询调校的方法。Itzik对所有新的T-SQL查询结构的使用和行为进行了细致的讨论,这包括CTE、PIVOT和UNPIVOT操作符,以及分级函数。他讨论了对TOP从句的增强,还提供了一些例子来介绍一些新的并且很有用的方法来为我们的查询加入集合操作。对数据修改操作符的新功能(INSERT、UPDATE和DELETE)也进行了深入描述。
《Microsoft SQL Server 2005技术内幕:T-SQL程序设计》
《T-SQL程序设计》这本书重点论述了T-SQL语言的可编程特性,并涵盖了对SQL Server应用中的事务、存储过程、函数和触发器的规划和使用。Itzik比较了分别基于集合与游标的编程技术并描述了如何确定哪一种技术更加合适,并且他还比较了CLR与关系编程并描述了哪一种技术更加适合哪一种活动。该书涵盖了临时对象的使用并探究了SQL Server 2005中新的错误处理功能。Itzik讨论了使用多种数据类型的主体,包括XML数据类型和用户定义的CLR数据类型。最后,本书中有一章是关于SQL Server Broker的,它能够在数据库应用程序中支持可控异步处理。
《Microsoft SQL Server 2005技术内幕:存储引擎》
您手中的这本书涵盖了SQL Server 2005的存储引擎。开始创作本书的时候,我先是从《Microsoft SQL Server 2000技术内幕》中取出一些与存储引擎主题相关的章节,然后再确定要涵盖哪些合适的特性。但很快我就意识到需要进行一些重新组织,这时我已经完成了完整的两章,分别是关于体系结构的一章和事务日志的一章。如同先前所有版本一样,我深入研究了数据文件中数据和索引的实际物理存储,并描述了文件空间的分配和管理。还介绍了一些没有正式公布的跟踪标记和DBCC命令,它们可以用来在合适的场合描述某些特性并帮助我们确认对SQL Server行为的理解是正确的。
在论述到SQL Server 2005中的新特性时,我会将其一一指出,下面是本书所细致涵盖的一些最重要的新特性。请注意,我们并不会对本书提到的所有的新特性都进行深入讨论。
SQL Server 2005元数据视图,包括兼容性视图、目录视图和动态管理视图(和函数)。
数据库快照。
用户/架构分离。
大数据对象存储,包括行溢出数据和varchar(MAX)数据。
分区表和索引的存储。
联机索引创建和重建。
快照隔离和行级版本控制。
《Microsoft SQL Server 2005技术内幕:查询调校和最优化》
本丛书的最后一册将是基于对真实世界中的SQL Server 2005的运行方式的观察,并将阐述如何最大限度地在真实的应用中利用该产品。这将是由多个作者完成的著作,每个作者负责他最擅长的领域。涵盖的主题将会包括:
确定什么地方需要进行调校的方法论。
优化器是如何确定理想的查询计划的。
使用SQL Server Profiler来监视SQL Server 2005。
查询计划的缓存和重用。
强制查询计划。
分区和索引视图的最优方法。
选择最佳索引。
取回查询结果和数据修改的提示和技巧。
例子和脚本
本书所描述的很多特性和行为都是通过T-SQL代码来描述的。其中一些代码只有短短数行,但是另外一些例子则需要相当复杂的编码,包括对一些动态管理视图进行连接的多种方法,所有这些都非常长并且很难打印出名字。
所有较长的示例代码都可以通过关联站点www.InsideSQLServer.com/companion进行下载。
未被涵盖的主题
我曾经提到过即使是使用四册书,也不能涵盖该产品的某些特性和方面。同时必须牢记,本丛书并不是教数据库管理员和应用程序开发者“如何做”的图书,而是阐述SQL Server幕后是如何工作的资料。 本丛书可以帮助读者拥有创建和诊断基于SQL Server的应用程序的坚实基础,并帮助理解SQL Server各种行为背后的原因。
除了商业智能(Analysis Service、Integration Service和Reporting Service)和高可用性(复制、数据库镜像、日志传送和集群),超出本书讨论范围的其他主题包括:
Notification Services。
XML索引。
全文检索。
客户端编程接口。
免责条款
为了描述SQL Server的一些行为,本书对一些没有正式公布的产品特性和对象进行了讨论,例如内部表。其中一些是读者自己有可能通过查看所支持的函数、存储过程和视图的定义发现的。在这些情况下,我只是通过向您提供一些您自己最终也会发现的信息而为您节约时间。另外一类未正式公布的特性是未正式公布的DBCC命令和跟踪标记,我在这里介绍它们只是为了对产品的某些行为进行更为细致的观察和深入的分析。除非有他人告知,大多数人是不能自己发现这类特性的。请一定牢记,未正式公布意味着不被支持。这就意味着如果读者对这些未正式公布特性有额外的问题,那么是不能通过致电微软客户支持服务中心来获得客户代表对这些问题的解答的。同时也不能保证一个未正式公布的特性会继续出现在下一版本的产品中。在某些情况下,未正式公布的特性会在一个Service Pack中改变行为,并且微软没有责任来通过readme文件或知识库文章来通知这一变化。在本书中当提到未正式公布的特性或工具时我会加以声明,并且在某些情况下我会重复强调微软不提供对它们的支持。请记住,该警告适用于本书中涉及的所有微软未正式公布的特性。
如何获得支持
我们已经尽了一切努力来保证本书内容的准确性。如果您遇到问题,请参考下面的资源。
关联站点
虽然我希望本书没有任何错误,并且请微软的SQL Server团队成员审阅了此书,但是该书仍然不是完美的,事实上也不存在这种完美无缺的书。对本书的更新和校正将会被张贴在关联站点www.InsideSQLServer.com/companion上。另外,如果发现任何您认为不正确的地方,您随时都可以使用该站点提供的反馈表与我取得联系。
微软学习站点
微软为各种图书的校正提供了下面的站点地址:
http://www.microsoft.com/learning/support
我们可以打开http://www.microsoft.com/learning/support/search.asp来直接连线微软学习知识库并查询我们所遇到的问题。
除了向作者发送反馈,读者还可以通过使用下面的方法向微软发送评论或问题。
邮局邮件:
Microsoft Learning
Attn: Inside Microsoft SQL Server 2005 Editor
One Microsoft Way
Redmond, WA 98052-6399
电子邮件:
mspinput@microsoft.com
请注意上面的地址并不提供产品支持。要获得SQL Server产品支持请打开站点www.microsoft.com/sql。我们还可以致电425-635-7011来获得标准支持服务,工作时间为周一到周五6AM-6PM太平洋时间,我们还可以搜索微软在线支持www.support.microsoft.com/ support。
虽然本书可能没有涵盖所有您所感兴趣的主题,但是我还是希望您能够从本书中找到有价值的信息。您可以告知我您所希望进一步学习的主题,我可能会向您推荐一些其他图书或者白皮书,也可能会通过SQL Server Magazine发表一篇相应的文章。您可以通过Web站点www.InsideSQLServer.com来联系我。
| 回书目 上一节 下一节 |
|
· 第六章 你能帮我吗?.. · Linux笔试面试题选摘测.. · 08年5月软考网管上午真.. · 性能测试从零开始 目录 · 08年5月软考网工上午真.. · 上周拒绝服务攻击(DDo.. |
· 08年5月各大网上书店及.. · 2008年5月24日软考试题.. · 软件设计师专家临考模.. · 上周网络管理员专家自.. · 网络工程师自测获奖名.. · 08年4月各大网上书店及.. |
|
||||
| · NAC安全访问控制 · 网络布线测试仪器 · Windows Server 2008专.. · Windows远程桌面应用 · 网络故障排除宝典 · 运营商封堵ADSL共享 中.. · 解析35岁技术人的价值.. · 世纪枭雄比尔盖茨的王.. |
· 主流品牌防火墙配置 · ASP.NET开发教程 · 超级计算机TOP500专题 · Vista SP1对决XP SP3 · SQL Server 2008/2005.. · 程序员如何成长? · C#技术开发指南 · 虚拟化技术还有点“虚” |
|||
|
||||
| · SOA 面向服务架构 · SQL Server 2008/2005.. · Apache技术专题 · 三层交换技术专题 · SQL Server入门到精通 · Windows远程桌面应用 · C#技术开发指南 · Apache技术专题 |
· Windows集群服务应用 · C#技术开发指南 · 国际文档格式标准开战 · 路由器设置与口令恢复 · Linux 集群技术专题 · PHP开发应用手册 · SOA 面向服务架构 · 企业数据恢复指南 |
|||
|
||||
| · SQL Server入门到精通 · SQL Server 2008/2005.. · SOA 面向服务架构 · Apache技术专题 · C#技术开发指南 · 三层交换技术专题 · Apache技术专题 · C#技术开发指南 |
· Windows远程桌面应用 · 企业数据恢复指南 · Windows集群服务应用 · 路由器设置与口令恢复 · Linux 集群技术专题 · SOA 面向服务架构 · 了解统一威胁管理(UTM).. · 反垃圾邮件技术应用 |
|||