第1章 范式化设计 1
1.1 表 1
1.2 实现数据范式化 1
1.2.1 准备工作 2
1.2.2 第一范式 4
1.2.3 第二范式 6
1.2.4 第三范式 7
1.2.5 其他范式 7
1.3 关系 8
1.3.1 1-1关系 8
1.3.2 1-1或1-多 9
1.3.3 多对多 10
1.4 关系图 12
1.5 降低范式化 21
1.6 超出范式化 21
1.6.1 保持简化 21
1.6.2 选择数据类型 22
1.6.3 有关存储的错误 22
1.7 示例 22
1.7.1 创建数据库 23
1.7.2 添加关系图和初始表 23
1.7.3 添加关系 26
1.7.4 添加一些约束 27
1.8 小结 28
2.1 SQL Server存储历史 29
第2章 SQL Server存储和索引结构 29
2.1.1 SQL Server存储 30
2.1.2 在6.5版和以前存储 32
2.1.3 7.0及以后的SQL Server存储 34
2.2 索引定义 37
2.2.1 B-树 38
2.2.2 在SQL Server中访问数据 40
2.2.3 索引类型和索引遍历 41
2.3 创建和删除索引 46
2.3.1 CREATE INDEX语句 46
2.3.2 创建约束时暗含的索引 49
2.4.1 可选择性 50
2.4 选择创建索引的时机 50
2.4.2 成本 51
2.4.3 选择聚集索引 51
2.4.4 列顺序问题 53
2.4.5 删除索引 53
2.4.6 利用索引调试向导 53
2.5 维护索引 54
2.5.1 碎片 55
2.5.2 定义碎片与页拆分的可能性 55
2.6 小结 59
第3章 事务和锁 60
3.1 事务 60
3.1.3 ROLLBACK TRAN 61
3.1.4 SAVE TRAN 61
3.1.2 COMMIT TRAN 61
3.1.1 BEGIN TRAN 61
3.2 SQL Server日志的工作方式 66
3.2.1 失败和恢复 68
3.2.2 隐式事务 69
3.3 锁和并发性 70
3.3.1 锁可以阻止的问题 71
3.3.2 可以加锁的资源 74
3.3.3 锁增加和锁对性能的影响 74
3.3.4 锁模式 75
3.3.5 锁的兼容性 77
3.3.6 控制特定锁的类型 77
3.4 设置隔离层 83
3.5 处理死锁 85
3.5.1 怎样指出存在死锁 85
3.5.2 怎样选择死锁牺牲品 86
3.5.3 避免死锁 86
3.6 小结 88
第4章 高级查询 89
4.1 什么是子查询 89
4.2 建立嵌套子查询 90
4.2.1 使用单值SELECT语句嵌套查询 90
4.2.2 使用子查询返回多个值的嵌套查询 91
4.2.3 ANY、SOME和ALL操作符 94
4.3.1 关联子查询是怎样工作的 95
4.3.2 WHERE子句中的关联子查询 95
4.3 关联子查询 95
4.3.3 SELECT清单中的关联子查询 97
4.4 衍生表 98
4.5 EXISTS操作符 100
4.6 混合数据类型CAST和CONVERT 103
4.7 性能比较 105
4.8 小结 107
第5章 XML简介 108
5.1 XML基础 108
5.1.1 XML文档的组成 110
5.1.2 良构XML 114
5.1.3 XML实例 116
5.1.4 确定元素和属性 119
5.2 命名空间 120
5.3 DTD和架构 122
5.3.1 DTD 123
5.3.2 XML架构 125
5.3.3 DTD/架构和性能总结 125
5.4 转换——XSLT 126
5.5 小结 131
第6章 XML集成 132
6.1 FOR XML子句 133
6.1.1 RAW 134
6.1.2 AUTO 135
6.1.3 EXPLICIT 136
6.1.4 OPENXML 146
6.1.5 XML语法规则 154
6.1.7 注释的语法 156
6.1.8 CDATA的语法 156
6.1.6 元素的语法 156
6.1.9 Namespaces的语法 157
6.1.10 entity的语法 157
6.2 HTTP访问 158
6.2.1 设置HTTP访问 159
6.2.2 基于URL的查询 164
6.2.3 使用模板 165
6.2.4 POST 168
6.2.5 XPath 172
6.2.6 设计结果的样式 175
6.2.7 更新程序简介 178
6.3 使用IcommandStream设置XML命令 178
6.4 XML相关资源 200
6.5 小结 202
第7章 全文检索 203
7.1 全文检索体系结构 204
7.2 设置全文索引和分类 205
7.2.1 授予数据库全文搜索能力 205
7.2.2 创建全文目录 206
7.2.3 给独立的表启用全文检索功能 207
7.2.4 索引组装 210
7.3 全文查询语法 211
7.3.1 CONTAINS 212
7.3.2 FREETEXT 213
7.3.3 CONTAINSTABLE 213
7.3.4 FREETEXTTABLE 214
7.3.5 近似(Proximity) 216
7.3.6 前缀条件 217
7.3.7 权重 217
7.3.8 词尾变化 218
7.3.9 对等级的简单总结 218
7.4 无效单词 219
7.5 所支持的语言 219
7.6 sp_fulltext_service 220
7.7 实现全文本检索 221
7.8 小结 222
第8章 英文查询 223
8.1 什么是英文查询 224
8.3 英文查询应用程序的体系结构 225
8.2 英文查询的优点和局限性 225
8.4 创建英文查询工程 226
8.4.1 使用SQL工程向导 228
8.4.2 基本英文查询 232
8.4.3 提炼和扩展实体和关系 235
8.4.4 提炼和扩展字段实体 236
8.4.5 定义附加的短语 238
8.4.6 保存查询和回归测试 239
8.4.7 定义表之间的关系 240
8.4.8 基于多个联接的关系 242
8.4.9 表和字段实体之间的短语和关系 243
8.4.10 定义子集短语 244
8.4.11 定义形容词短语 246
8.4.13 字典条目 249
8.4.12 定义同义词 249
8.5 重新测试应用程序 251
8.6 分发英文查询应用程序 252
8.6.1 工程文件 252
8.6.2 建立英文查询应用程序 255
8.6.3 使用英文查询应用程序 255
8.6.4 分发 263
8.7 小结 263
第9章 分布式查询和事务 265
9.1 分布式事务 265
9.1.1 准备阶段 266
9.1.2 提交阶段 266
9.2.1 创建链接服务器 267
9.2 分布式查询 267
9.2.2 使用链接服务器 269
9.2.3 在链接服务器上执行sprocs 273
9.2.4 从远程服务器上收集元数据 274
9.2.5 创建和使用通道查询 277
9.2.6 在远程数据源上使用特别查询 278
9.2.7 其他分布式查询的注意事项 279
9.3 联合服务器(分布式分区视图) 281
9.4 小结 288
第10章 数据转换服务 289
10.1 DTS包编辑器 289
10.1.1 连接(connection) 289
10.1.2 任务 291
10.1.3 工作流 293
10.2 使用导入/导出向导 294
10.2.1 Execute SQL 299
10.2.2 工作流 300
10.2.3 连接对象 300
10.2.4 转换 300
10.3 创建一个简单的转换包 301
10.4 保存包 311
10.5 使用DTS代替bcp 312
10.6 从命令行运行dtsrun 314
10.7 小结 316
第11章 高级DTS 317
11.1 DTS对象模型介绍 317
11.2 Package对象 319
11.3 动态包 321
11.4 动态属性任务 323
11.5 多阶段数据抽取 327
11.5.1 启用多阶段数据提取 328
11.5.2 多阶段数据抽取的例子 329
11.6 在DTS中优化数据加载 335
11.7 小结 336
第12章 大容量复制程序(bcp) 337
12.1 bcp的作用 337
12.2 bcp导入 340
12.2.1 数据导入的例子 341
12.2.2 记录日志与不记录日志 344
12.3 格式化文件 344
12.3.2 使用格式化文件 347
12.3.1 不匹配的字段顺序 347
12.3.3 最大化导入性能 348
12.4 bcp导出 348
12.5 大容量插入 349
12.6 小结 350
第13章 复制 351
13.1 支持分布式数据 352
13.2 架构复制时的考虑 352
13.2.1 独立性 352
13.2.2 延迟性 352
13.3 发布比喻 353
13.2.5 其他考虑 353
13.2.4 架构一致性 353
13.2.3 数据一致性 353
13.3.1 订阅刊物 354
13.3.2 订阅服务器类型 355
13.3.3 过滤数据 355
13.4 复制类型 355
13.4.1 快照复制 356
13.4.2 合并复制 358
13.4.3 事务复制 360
13.4.4 立即更新的订阅服务器 362
13.4.5 混合复制类型 363
13.5 复制模型假设 363
13.5.1 标准模型 363
13.5.2 混合模型 365
13.6 实现示例 366
13.5.3 附加说明 366
13.6.1 会诊专家申请方案 367
13.6.2 交互 367
13.7 计划复制 368
13.7.1 数据考虑 368
13.7.2 复制类型 369
13.8 复制向导 369
13.9 启用发布和分发 369
13.9.1 启动向导 370
13.9.2 默认配置 371
13.9.3 配置之后 373
13.9.5 Transact-SQL过程 374
13.9.4 禁用发布 374
13.10 事务/快照发布刊物 375
13.10.1 创建和管理发布向导 375
13.10.2 配置之后 380
13.10.3 Transact-SQL过程 381
13.11 合并发布刊物 382
13.11.1 创建和管理发布刊物向导 382
13.11.2 配置之后 386
13.11.3 Transact-SQL存储过程 387
13.12 强制订阅刊物 388
13.12.1 强制订阅刊物向导 388
13.12.3 Transact-SQL过程 390
13.13 请求订阅刊物 390
13.12.2 关于合并订阅 390
13.13.1 请求订阅刊物向导 391
13.13.2 Transact-SQL过程 392
13.14 管理复制 392
13.14.1 复制脚本 392
13.14.2 支持各种复制 392
13.14.3 发布到Internet 393
13.14.4 复制和架构变化 394
13.14.5 复制监视器 396
13.14.6 后续 397
13.15 小结 398
14.1 讨论更多的关系图和关系 399
第14章 高级设计 399
14.1.1 一组关系类型 400
14.1.2 实体盒 400
14.1.3 关系线 401
14.1.4 终止符 401
14.2 逻辑与物理设计 402
14.2.1 逻辑模型的目的 402
14.2.2 逻辑模型的组成 403
14.3 处理基于文件的信息 404
14.4 子类 406
14.4.1 子类的类型 406
14.4.2 实现子类 407
14.4.3 子类的物理实现 408
14.5 数据库重用 409
14.4.4 把子类添加到扩展属性中 409
14.5.1 候选的重用数据库 410
14.5.2 怎样分解 410
14.5.3 高代价的重用性 411
14.6 分区实现扩展性 411
14.7 小结 412
第15章 分析服务 413
15.1 终端用户的要求 413
15.1.1 联机事务处理(OLTP) 413
15.1.2 联机分析处理(OLAP) 414
15.1.3 数据挖掘 415
15.1.4 OLTP或OLAP 415
15.2 维度数据库 416
15.2.3 星型和雪花型架构 417
15.2.1 事实数据表 417
15.2.2 维度表 417
15.2.4 数据多维集 418
15.3 OLAP存储类型 418
15.3.1 MOLAP 419
15.3.2 ROLAP 419
15.3.3 HOLAP 419
15.4 数据仓库的概念 419
15.4.1 数据仓库特性 420
15.4.2 数据集市 421
15.5 数据转换服务 421
15.5.1 数据校验 421
15.5.3 数据移植 422
15.5.4 数据转换 422
15.5.2 数据清理 422
15.5.5 DTS组件 423
15.6 元数据和知识库 423
15.7 数据挖掘模型 423
15.8 数据挖掘算法 424
15.8.1 决策树 424
15.8.2 聚集 425
15.9 分析管理器 426
15.10 建立数据挖掘模型 438
15.11 小结 441
第16章 数据库安全性 443
16.1.1 一个人、一个帐号和口令 445
16.1 安全性基础 445
16.1.2 口令有效期 446
16.1.3 口令长度和组成 448
16.1.4 登录次数 449
16.1.5 用户和口令信息存储 449
16.2 安全性选项 450
16.2.1 SQL Server安全性 451
16.2.2 NT集成安全性 454
16.3 用户权限 456
16.3.1 对特定数据库授予访问权 456
16.3.2 授予对象许可权 457
16.3.3 用户权限和语句级许可权 462
16.4 服务器和数据库角色 463
16.4.1 服务器角色 464
16.4.2 数据库角色 465
16.5.1 创建应用程序角色 468
16.5 应用程序角色 468
16.5.2 添加应用程序角色许可权 469
16.5.3 使用应用程序角色 469
16.5.4 删除应用程序角色 470
16.6 XML的安全性 470
16.7 更高级的安全性 470
16.7.1 处理Guest账户 470
16.7.2 TCP/IP端口设置 471
16.7.3 不要使用sa账户 472
16.7.4 围绕xp_cmdshell 472
16.7.5 视图、存储过程和UDF 472
16.8 小结 473
17.1 调试时机 474
第17章 性能调试 474
17.2 索引选择 475
17.2.1 全覆盖索引 476
17.2.2 索引调试向导 476
17.2.3 索引调试向导的“清闲” 477
17.3 客户与服务器端的处理 477
17.4 策略性地降低范式化要求 478
17.5 程序维护 478
17.6 很好地组织Sprocs 479
17.6.1 使事务尽可能短 479
17.6.2 使用限制最少的事务隔离层 479
17.6.3 执行多种解决方案 479
17.8 细节考虑 480
17.6.4 避免使用游标 480
17.7 使用临时表 480
17.9 硬件考虑 481
17.9.1 服务器的独占使用 481
17.9.2 I/O与CPU速度 482
17.9.3 OLTP与OLAP 485
17.9.4 在线或离线 485
17.9.5 宕机的危险 486
17.9.6 丢失数据 486
17.9.7 性能不是全部 486
17.9.8 硬盘支持 487
17.9.9 理想系统 487
17.10 问题纷争的解决方法 487
17.10.1 显示计划和统计信息 488
17.10.2 数据库一致性检验程序 492
17.10.3 查询控制器 492
17.10.4 SQL Server Profiler 493
17.10.5 性能监视器(Perfmon) 496
17.11 小结 497
第18章 管理概览 498
18.1 调度表作业 498
18.1.1 创建操作员 499
18.1.2 创建作业和任务 502
18.2 备份和恢复操作 513
18.2.1 备份介质 514
18.2.2 备份 515
18.2.3 恢复数据 517
18.3 自动响应警报 520
18.3.1 在EM中创建响应警报 520
18.3.2 在T-SQL中创建响应警报 521
18.4 全文目录操纵 522
18.4.1 备份与恢复 522
18.4.2 安排注入的调度 523
18.5 数据库复制 523
18.5.1 复制数据库向导 523
18.5.2 备份和恢复 525
18.5.3 连接/分开 525
18.6 索引重建 526
18.7 归档数据 526
18.8 小结 527
附录A 系统函数 528
附录B 函数列表 536
B.1 聚集函数 536
B.2 游标函数 538
B.3 日期和时间函数 539
B.4 数学函数 541
B.5 元数据函数 544
B.6 行集函数 552
B.7 安全性函数 554
B.8 字符串函数 556
B.9 系统函数 559
B.10 文本和图像函数 568
B.11 小结 568