基 础 篇
第1章 万丈高楼平地起——SQL Server 2005数据库系统部署/1
1.1 数据管理工具及其选择/2
1.2 微软数据管理平台的发展/3
1.2.1 SQL Server演变史/3
1.2.2 SQL Server 2005与SQL Server 2000的比较/3
1.3 SQL Server 2005的体系结构/6
1.4 SQL Server 2005的版本体系和安装要求/8
1.5 安装过程及系统概览/9
1.5.1 安装/9
1.5.2 系统构成/16
1.5.3 程序文件构成/18
1.6 部署中常见的问题及解决方法/20
1.6.1 安全问题/20
1.6.2 VS 2005和SQL Server 2005的安装顺序/20
1.6.3 解决“性能监视器计数器检查失败”问题/21
1.6.4 SQL Server安装程序被挂起怎么办/21
1.6.5 msmq安装问题的解决/22
第2章 惊鸿一瞥——SQL Server 2005的基本操作/23
2.1 Adventure Works示例数据库解析/24
2.1.1 示例数据库的安装/24
2.1.2 数据库的构成/25
2.2 SQL Server Management Studio的使用/27
2.2.1 启动/27
2.2.2 操作界面概览/27
2.2.3 对象资源管理器的连接/29
2.2.4 配置选项/30
2.2.5 更改窗口布局/32
2.2.6 代码编辑器的使用/33
2.3 Business Intelligence Development Studio的操作/41
2.3.1 开始使用/41
2.3.2 工作界面构成/43
2.3.3 菜单构成/45
2.4 SQL Server配置管理器的应用/46
2.4.1 服务的启动与停止/46
2.4.2 更改 SQL Server 服务所使用的账户和密码/46
2.4.3 自动启动的设置/47
2.4.4 启动参数的设置/48
2.4.5 SQL Server 2005网络配置/50
2.4.6 SQL Native Client配置/51
第3章 半亩方塘一鉴开——数据库理论基础及其在SQL Server 2005中的实现/53
3.1 关系数据库基础/54
3.2 SQL Server 2005系统数据库/55
3.2.1 数据库的文件构成/55
3.2.2 数据库文件组/55
3.2.3 SQL Server文件和文件组的规则/56
3.2.4 master数据库/56
3.2.5 msdb数据库/57
3.2.6 model数据库/57
3.2.7 tempdb 数据库/57
3.2.8 Resource数据库/58
3.3 数据库的创建与管理/58
3.3.1 数据库的创建/58
3.3.2 “数据库属性”对话框的使用/63
3.3.3 收缩数据库/67
3.3.4 数据库的分离和附加/68
3.3.5 删除数据库/71
3.3.6 数据库创建与管理的经验总结/72
3.4 表的创建及相关设置/74
3.4.1 表设计器的使用/74
3.4.2 表设计器菜单和工具栏的使用/76
3.4.3 列的数据类型及其修改/77
3.4.4 列空值选项的应用/81
3.4.5 指定列的默认值/81
3.4.6 列标识属性的使用/82
3.4.7 表数据的增、删、改/83
3.4.8 创建表的经验总结/84
第4章 重剑无锋,大巧不工——T-SQL使用技巧/87
4.1 初识T-SQL:从SELECT的使用开始/88
4.1.1 SELECT的简单使用/88
4.1.2 T-SQL语言的使用约定/90
4.2 SELECT使用的深入/93
4.2.1 为表指定别名/93
4.2.2 结果集列表的使用/93
4.2.3 INTO关键字的使用/97
4.2.4 FROM子句的使用/97
4.2.5 用WHERE确定查询条件/99
4.2.6 用GROUP BY分组列表/106
4.2.7 用HAVING分组查询条件/107
4.2.8 用ORDER BY排序列表/109
4.2.9 用TOP来限制结果集/110
4.2.10 用DISTINCT来消除重复项/111
4.2.11 PIVOT和UNPIVOT的使用/112
4.2.12 JOIN的使用/113
4.2.13 UNION的使用/116
4.2.14 EXCEPT和INTERSECT的使用/118
4.2.15 子查询/118
4.3 CREATE DATABASE的使用/123
4.3.1 基本语法解析/124
4.3.2 实现原理/125
4.3.3 CREATE DATABASE示例/126
4.4 ALTER DATABASE/126
4.4.1 基本语法解析/126
4.4.2 ALTER DATABASE示例/127
4.5 DROP DATABASE/128
4.6 CREATE TABLE/128
4.6.1 基本语法解析/128
4.6.2 CREATE TABLE示例/130
4.7 ALTER TABLE/131
4.7.1 基本语法解析/131
4.7.2 ALTER TABLE示例/132
4.8 DROP TABLE/133
4.9 INSERT/133
4.9.1 基本语法解析/133
4.9.2 INSERT示例/134
4.10 UPDATE/135
4.10.1 基本语法/135
4.10.2 UPDATE示例/136
4.11 DELETE/137
4.11.1 基本语法解析/137
4.11.2 DELETE示例/137
4.12 操作架构的T-SQL/137
4.12.1 CREATE SCHEMA/138
4.12.2 ALTER SCHEMA/139
4.12.3 DROP SCHEMA/140
4.13 在T-SQL中使用同义词/140
4.13.1 什么是同义词/140
4.13.2 创建同义词/140
4.13.3 删除同义词/141
4.14 常量和变量的使用/141
4.14.1 常量/141
4.14.2 变量/142
4.15 数据类型转换/146
4.15.1 转换的方式/146
4.15.2 转换为binary或varbinary/147
4.15.3 转换为字符数据/147
4.15.4 转换datetime和smalldatetime数据/147
4.15.5 转换money数据/148
4.15.6 转换decimal和numeric数据/148
4.16 运算符的使用/149
4.17 表达式的使用/150
4.17.1 表达式的构成/150
4.17.2 表达式使用方法/150
4.17.3 一种特殊的表达式:空值/150
4.18 函数的使用/151
4.18.1 使用的场合/151
4.18.2 聚合函数/152
4.18.3 配置函数/153
4.18.4 数学函数/155
4.18.5 日期和时间函数/158
4.18.6 字符串函数/159
4.18.7 其他函数类型/162
4.19 查询的可视化设计/163
4.19.1 创建插入脚本/163
4.19.2 使用查询设计器/165
4.20 模板管理器的使用/174
4.20.1 打开模板/174
4.20.2 使用模板创建脚本/175
4.20.3 创建自定义模板/176
第5章 山不厌高,海不厌深——深入SQL Server 2005数据库管理/179
5.1 数据完整性/180
5.1.1 约束的基本知识/180
5.1.2 PRIMARY KEY约束/181
5.1.3 FOREIGN KEY约束/184
5.1.4 UNIQUE约束/187
5.1.5 CHECK约束/189
5.1.6 规则/191
5.1.7 默认值/192
5.1.8 使用默认对象/194
5.2 数据库关系图/195
5.2.1 表的关系/195
5.2.2 数据库关系图的基本操作/195
5.2.3 在数据库关系图中处理表/198
5.3 编写结构化的T-SQL程序/200
5.3.1 BEGIN…END语句块/200
5.3.2 IF…ELSE条件语句/201
5.3.3 CASE选择表达式/202
5.3.4 WHILE重复执行语句/203
5.3.5 GOTO跳转语句/204
5.3.6 RETURN返回语句/205
5.3.7 WAITFOR时间控制语句/205
5.4 使用索引提高检索效率/206
5.4.1 为什么要用索引/206
5.4.2 索引的分类/207
5.4.3 索引的可视化管理/209
5.4.4 使用CREATE INDEX创建索引/211
5.4.5 修改和删除索引/212
5.4.6 查看和管理索引/213
5.5 视图的使用/214
5.5.1 视图基本知识/215
5.5.2 视图的创建/215
5.5.3 视图的管理/217
5.5.4 通过视图修改数据/218
5.5.5 视图设计器的使用/219
5.5.6 视图的应用/220
5.6 通过用户定义函数扩展函数功能/222
5.6.1 用户定义函数的分类/222
5.6.2 用CREATE FUNCTION创建自定义函数/223
5.6.3 更改、删除自定义函数/226
5.6.4 用户定义函数的可视化设计/226
5.7 游标的使用/227
5.7.1 游标的类型/227
5.7.2 游标的基本操作/228
5.7.3 通过变量使用FETCH/231
5.8 存储过程的使用/232
5.8.1 存储过程的分类/233
5.8.2 用CREATE PROCEDURE创建存储过程/234
5.8.3 可视化存储过程创建/235
5.8.4 存储过程的修改/237
5.8.5 存储过程的执行/237
5.8.6 用存储过程返回值/240
5.8.7 存储过程的重新编译/241
5.8.8 存储过程的删除/242
5.8.9 系统存储过程的使用/242
5.9 通过触发器保证数据完整性/244
5.9.1 触发器的分类/245
5.9.2 创建触发器/246
5.9.3 修改触发器/249
5.9.4 删除触发器/249
5.9.5 启用和禁用触发器/249
5.9.6 触发器的使用/250
5.10 事务控制方法/253
5.10.1 事务的特点/253
5.10.2 显式事务的处理/254
5.10.3 自动提交事务/257
5.10.4 隐式事务/257
5.10.5 事务和批处理的区别/258
5.11 SQL Server 2005数据库深入管理的经验总结/258
5.11.1 明确数据库对象的角色/259
5.11.2 可视化操作和T-SQL语言协同/259
第6章 另辟蹊径——命令提示工具的妙用/261
6.1 使用SQLCMD/262
6.1.1 启动和终止SQLCMD/262
6.1.2 SQLCMD的基本使用/263
6.1.3 用SQLCMD执行交互式动作/267
6.1.4 用SQLCMD运行查询文件/268
6.1.5 在脚本中使用变量/269
6.1.6 使用 SQLCMD 模式/270
6.2 使用bcp复制数据/271
6.3 使用命令行工具管理程序/272
6.3.1 使用sqlwb管理SQL Server Management Studio/272
6.3.2 使用sqlservr维护SQL Server/273
第7章 金钟罩,铁布衫——打造安全的数据库系统/275
7.1 通过权限层次保证安全的机制/276
7.1.1 系统权限层次结构/276
7.1.2 两种安全认证模式/278
7.1.3 权限的类别/278
7.1.4 查看可授予权限列表/279
7.2 账户的创建和管理/280
7.2.1 可视化创建账户/280
7.2.2 用T-SQL创建账户/285
7.2.3 修改和删除账户/287
7.2.4 特殊的SA账户/289
7.3 角色和用户的创建与管理/289
7.3.1 角色类型/290
7.3.2 角色的创建与管理/291
7.3.3 用户的创建与管理/293
7.4 DCL语言对数据库权限的控制/296
7.4.1 GRANT的使用/296
7.4.2 REVOKE的使用/297
7.4.3 DENY的使用/298
7.5 SQL注入的安全问题/299
7.5.1 对输入进行验证/299
7.5.2 控制客户端输入的使用范围/299
7.5.3 用好Parameters 集合/300
7.6 安全管理的经验/300
7.6.1 提高安全管理效率/300
7.6.2 管理好账号/301
7.6.3 管理好日志/303
7.6.4 管理好扩展存储过程/304
7.6.5 管理好端口/305
第8章 有备无患——数据库的备份和恢复/307
8.1 从备份恢复数据的原理/308
8.1.1 备份的重要性/308
8.1.2 数据库备份设备/308
8.1.3 备份方式/309
8.1.4 恢复模式/310
8.2 创建和使用备份设备/313
8.2.1 用sp_addumpdevice创建备份设备/313
8.2.2 通过可视化操作创建备份设备/314
8.2.3 备份设备的使用/315
8.3 完整备份与恢复/315
8.3.1 可视化实施完整备份/316
8.3.2 用BACKUP语句创建完整备份/318
8.3.3 可视化恢复完整备份/321
8.3.4 用RESTORE语句恢复完整备份/324
8.4 差异备份与恢复/326
8.4.1 可视化差异备份/326
8.4.2 用BACKUP创建差异备份/326
8.4.3 可视化恢复差异备份/327
8.4.4 用RESTORE恢复差异备份/327
8.5 日志备份与恢复/328
8.5.1 可视化备份事务日志/328
8.5.2 用BACKUP LOG备份事务日志/329
8.5.3 可视化还原事务日志备份/330
8.5.4 用RESTORE LOG恢复事务日志/331
8.6 文件和文件组备份与恢复/332
8.6.1 可视化备份文件和文件组/332
8.6.2 用BACKUP备份文件和文件组/333
8.6.3 可视化还原文件和文件组/333
8.6.4 用RESTORE还原文件和文件组/334
8.7 系统数据库的备份与恢复/335
8.8 数据库备份和恢复的经验总结/336
8.8.1 用计划跟踪变化/336
8.8.2 充分运用备份和恢复的模板/337
第9章 凌波微步——SQL Server Profiler 对数据库的跟踪/339
9.1 SQL Server Profiler的作用/340
9.2 启动SQL Server Profiler/340
9.3 创建和修改跟踪/341
9.3.1 创建跟踪/341
9.3.2 设置全局跟踪选项/345
9.3.3 修改跟踪的事件和数据列/346
9.4 跟踪的管理/347
9.4.1 保存跟踪/347
9.4.2 重播跟踪/348
9.5 创建、修改和使用跟踪模板/352
9.5.1 SQL Server Profiler预定义的模板/352
9.5.2 创建和修改跟踪模板/354
9.6 用系统存储过程实施跟踪/355
9.7 使用temp目录提高访问跟踪数据性能的技巧/356
第10章 精益求精——数据库引擎优化顾问的使用/357
10.1 数据库引擎优化顾问的分析对象及功能/358
10.2 数据库引擎优化顾问GUI的使用/358
10.2.1 GUI概览/358
10.2.2 用GUI优化工作负荷的过程/360
10.3 使用dta命令提示实用工具/365
10.3.1 dta命令的语法/365
10.3.2 dta优化工作负荷的过程与方法/367
10.4 分析跟踪文件/368
高 级 篇
第11章 佳偶天成——XML与SQL Server 2005的配合使用/371
11.1 有关XML的what、why和how/372
11.1.1 什么是XML/372
11.1.2 为什么需要XML/372
11.1.3 如何实现XML/373
11.2 使用XML数据类型/375
11.2.1 创建XML数据类型/375
11.2.2 创建、管理和使用XML Schema/376
11.3 查询XML的基本方法/381
11.3.1 查询表达式/381
11.3.2 FLWOR 语句/381
11.3.3 查询路径/382
11.3.4 查询的注释/383
11.3.5 查看查询结果/383
11.4 操作XML数据/383
11.4.1 使用query()方法查询/384
11.4.2 使用exist()方法判定存在性/385
11.4.3 使用value()方法提取值/385
11.4.4 Insert结合modify方法插入XML数据/386
11.4.5 用replace value of结合modify方法修改XML数据的值/387
11.4.6 用delete结合modify方法删除XML节点/387
11.5 用FOR XML构造XML/388
11.5.1 FOR XML的基本使用方法/388
11.5.2 使用RAW模式/389
11.5.3 使用PATH模式/391
11.5.4 TYPE关键字的作用/393
11.5.5 FOR XML的嵌套/393
11.6 用OPENXML查询 XML/396
11.6.1 OPENXML的运行原理/396
11.6.2 OPENXML的基本使用/396
11.6.3 行集格式的设置/398
第12章 如来神掌——全文搜索的使用/401
12.1 搜索的两大体系:表搜索和全文搜索/402
12.2 全文搜索的运行原理/402
12.2.1 体系结构/402
12.2.2 全文索引的工作过程/404
12.2.3 全文目录的作用/405
12.3 实现全文搜索的过程/405
12.3.1 启动全文搜索服务/405
12.3.2 创建全文目录/406
12.3.3 定义全文索引/410
12.3.4 填充操作/415
12.3.5 查询确认/416
12.4 全文搜索的管理/416
12.4.1 用ALTER FULLTEXT CATALOG修改全文目录/416
12.4.2 用DROP FULLTEXT CATALOG删除全文目录/417
12.4.3 用ALTER FULLTEXT INDEX更改全文索引/417
12.4.4 用DROP FULLTEXT INDEX删除全文索引/419
12.4.5 使用相关系统视图和系统存储过程/419
12.5 用CONTAINS检索特定的词/420
12.5.1 CONTAINS语法解析/420
12.5.2 前缀搜索/421
12.5.3 派生词搜索/422
12.5.4 词加权搜索/422
12.5.5 邻近词搜索/423
12.5.6 布尔逻辑检索/423
12.6 用FREETEXT进行模糊检索/424
12.7 CONTAINSTABLE和FREETEXTTABLE的使用/424
12.7.1 用CONTAINSTABLE和FREETEXTTABLE来链接表/425
12.7.2 使用RANK值/426
12.7.3 限制结果集/426
12.8 全文搜索的使用经验/427
12.8.1 结合T-SQL使用全文搜索/427
12.8.2 提高全文搜索性能的策略/427
第13章 斗转星移——SQL Server 复制的运用/429
13.1 复制技术构架/430
13.1.1 发布服务器/430
13.1.2 分发服务器/430
13.1.3 订阅服务器/431
13.1.4 3种复制类型/431
13.1.5 复制的使用场合/432
13.2 配置和查看分发服务器/433
13.2.1 可视化配置分发服务器/433
13.2.2 查看和修改分发服务器属性/437
13.2.3 复制监视器对复制的管理/439
13.3 创建复制数据库/440
13.4 配置发布服务器/441
13.5 配置订阅服务器/446
13.6 复制技术的使用经验/450
13.6.1 选择适当的复制类型/450
13.6.2 提高复制性能的方法/451
第14章 能屈能伸——Service Broker 处理异步消息的方法/453
14.1 Service Broker的构成/454
14.2 编写Service Broker消息处理程序/455
14.2.1 环境设置/456
14.2.2 CEATE MESSAGE TYPE/456
14.2.3 CREATE CONTRACT/457
14.2.4 CREATE QUEUE/458
14.2.5 CREATE SERVICE/459
14.2.6 处理消息/460
14.3 深入Service Broker编程/464
第15章 一举成名天下知——通知服务的使用/467
15.1 Notification Services 体系结构/468
15.1.1 Notification Services的基本原理/468
15.1.2 Notification Services的结构和运行机制/469
15.2 运行一个Notification Services程序框架/471
15.3 ICF文件创建与解析/474
15.4 ADF文件创建与解析/476
15.4.1 数据库节点/476
15.4.2 填充<EventClasses>/477
15.4.3 填充<NotificationClasses>/478
15.4.4 填充<SubscriptionClasses>/480
15.4.5 填充<Providers>/482
15.4.6 配置生成器和分发服务器/482
15.4.7 填充<ApplicationExecution-Settings>/483
15.4.8 查看对ADF文件的更改带来的变化/484
15.5 Notification Services程序的运行/486
15.5.1 配置运行环境/486
15.5.2 订阅通知/488
15.5.3 事件生成/492
15.5.4 管理生成的通知/495
第16章 背靠大树好乘凉——基于VS 2005的CLR使用技巧/497
16.1 CLR原理/498
16.2 CLR扩展数据库功能的过程—以存储过程为例/498
16.2.1 启用 CLR环境/498
16.2.2 创建CLR项目/499
16.2.3 调试和测试创建的数据库项/502
16.2.4 部署到 SQL Server/503
16.3 创建CLR函数/505
16.4 创建CLR用户自定义类型/506
16.5 创建CLR聚合/506
16.6 创建CLR触发器/508
应 用 篇
第17章 一试身手——基于SQL Server 2005的数据库程序开发/511
17.1 数据库程序开发的基本理论/512
17.1.1 一种工具/512
17.1.2 两种模式/512
17.1.3 三层架构/513
17.1.4 七个过程/513
17.2 ADO.NET开发细节——以小型HR系统为例/514
17.2.1 数据库设计/514
17.2.2 简单数据显示/516
17.2.3 数据源及其相关对象的解析/519
17.2.4 自定义数据绑定/524
17.2.5 参数化查询/527
17.2.6 程序的管理/528
17.3 深入ADO.NET/529
第18章 华山之巅——SSIS、SSAS、SSRS协同实现商务智能/533
18.1 从数据到智能/534
18.1.1 数据如何转化为智能/534
18.1.2 DW、OLAP、DM/537
18.1.3 SQL Server 2005 BI体系/538
18.2 用SSIS整合数据/539
18.3 用SSAS的OLAP功能分析数据/544
18.4 用SSRS展现数据/553