前言 1
第1章 Microsoft SQL Server数据库基本概念 1
1.1 综述 1
1.2 关系数据库基本概念 1
1.2.1 关系数据库产生的历史 1
1.2.2 关系数据库的定义 2
1.2.3 什么是实例 3
1.2.4 主键和外键 4
1.2.5 关系数据库的特点 5
1.3 Microsoft SQL Server 2000的特点 5
1.3.1 可伸缩的商业解决方案 6
1.3.2 与Internet集成和XML的支持 8
1.3.3 易于安装、部署和使用 8
1.3.4 强大的数据仓库 8
1.3.9 用户定义函数 10
1.3.8 索引的增强 10
1.3.7 全文检索的增强 10
1.3.5 多个SQL Server实例 10
1.3.6 排序规则的增强 10
1.3.10 新数据类型 11
1.3.11 INSTEAD OF和AFTER触发器 11
1.3.12 级联引用完整性约束 11
1.3.13 Net-Library增强 11
1.3.14 Kerberos和安全委托 11
1.3.15 备份和恢复增强 11
1.3.18 故障转移群集构架 12
1.3.16 实用工具操作可伸缩性增强 12
1.3.17 第一个集成了数据转换服务的数据库 12
1.3.19 对ANSI-92 SQL的支持和扩展 13
1.3.20 集中管理 13
1.3.21 可视化管理工具 14
1.3.22 对多种前端的支持 14
1.3.23 与Microsoft其他产品的紧密集成性 14
1.4 Microsoft SQL Server如何与Windows 2000服务器集成 15
1.5 SQL Server和两层/三层体系结构的关系 16
1.6.1 分布式管理框架 20
1.6 Microsoft SQL Server结构 20
1.6.2 Microsoft SQL Server前端结构化组件 21
1.6.3 Microsoft SQL Server对象库结构化组件 22
1.6.4 Microsoft SQL Server后端结构化组件 23
1.7 小结 24
第2章 安装Microsoft SQL Server2000 25
2.1 综述 25
2.2 Microsoft SQL Server2000的各个版本 25
2.3 安装Microsoft SQL Server 2000的硬件和软件需求 26
2.3.1 最小硬件需求 27
2.3.2 最小软件需求 27
2.4 为安装SQL Server2000而配置Windows 2000服务器 28
2.5 创建Microsoft SQL Server 2000服务帐号 30
2.6.2 从网络共享中安装 32
2.6.3 无人值守安装 32
2.6.1 从光盘安装 32
2.6 Microsoft SQL Server 2000的安装方案 32
2.6.4 向远程服务器中安装 42
2.7 Microsoft SQL Server 2000的安装和配置选项 42
2.7.1 选择许可模式 42
2.7.2 选择网络库 43
2.7.3 选择排序规则 45
2.8 安装Microsoft SQL Server2000的步骤 46
2.9 Microsoft SQL Server2000软件的各个组件 56
2.10 如何使用客户端网络实用工具 57
2.11 小结 60
第3章 验证、配置、理解Microsoft SQL Server 2000 62
3.1 综述 62
3.2 验证Microsoft SQL Server 2000是否安装正确 62
3.2.1 验证Microsoft SQL Server 2000文件的存诸位置 62
3.2.2 如何验证Microsoft SQL Server 2000注册表入口项的位置 63
3.2.3 验证Microsoft SQL Server 2000服务已经被正确地安装 65
3.3 如何停止和启动Microsoft SQL Server 2000服务 66
3.3.1 如何使用Microsoft SQL Server 2000服务管理器 67
3.3.2 如何使用Microsoft SQL Server 2000企业管理器 68
3.3.3 如何使用命令行 69
3.3.4 如何使用控制面板/管理工具中的服务对话框 70
3.4 如何注册服务器和创建服务器组 70
3.4.1 如何注册其他的Microsoft SQL Server 2000 71
3.4.2 如何创建服务器组 73
3.5 如何使用Microsoft SQL Server 2000企业管理器 74
3.6 如何修改Microsoft SQL Server 2000的配置 74
3.6.1 常规 表单中的配置信息 75
3.6.2 内存 表单中的配置信息 76
3.6.3 安全性 表单中的配置信息 79
3.6.4 服务器设置 表单中的配置信息 80
3.6.5 连接 表单中的配置信息 81
3.6.6 处理器 表单中的配置信息 83
3.7 SQL Server的高级配置 85
3.7.1 服务器配置的所有选项 85
3.7.2 修改配置选项 87
3.7.3 用户、锁和打开的对象 88
3.7.4 工作线程 89
3.8 如何为第一次使用而配置Microsoft SQL Server 2000 89
3.8.1 指定系统管理员口令 89
3.8.2 修改Microsoft SQL Server 2000的配置 90
3.9 验证Microsoft SQL Server 2000 90
3.10 安装中常见的问题 91
3.11 SQL Server系统数据库和系统表 92
3.11.2 Master数据库 93
3.11.1 数据库目录表 93
3.11.3 msdb数据库 94
3.11.4 model数据库 95
3.11.5 tempdb数据库 95
3.11.6 pubs数据库和northwind数据库 95
3.12 小结 95
第4章 项目管理和数据库设计 97
4.1 项目管理概述 97
4.1.1 项目管理中的文档 97
4.1.2 各个文档之间的关系 98
4.1.3 设计文档与 需求分析 的关系 99
4.1.4 体系结构 99
4.1.5 系统设计的一般原则 99
4.1.6 系统设计方法:结构化方法和面向对象方法 100
4.2 项目管理的各个步骤 102
4.2.1 需求分析 102
4.2.2 系统设计 103
4.2.4 测试 104
4.2.3 编程 104
4.2.5 用户验收 105
4.3 项目实例:图书馆管理系统 105
4.3.1 该项目的简短需求 105
4.3.2 该项目与数据库相关的四个实施步骤 106
4.4 数据库的逻辑设计 107
4.4.1 ERA模型 107
4.4.2 从ERA模型到逻辑数据库的转化 108
4.4.3 指定表的主键 109
4.4.4 表的规范化 111
4.6 设计和实现数据完整性要求 114
4.5 逻辑数据库设计的物理实现 114
4.7 数据库服务器编程 115
4.8 设计逻辑数据库的其他考虑 115
第5章 创建和管理数据库 116
5.1 数据库存储结构 116
5.1.1 数据库和文件 116
5.1.2 什么是页面 117
5.2.1 创建事务日志 118
5.2.2 事务日志如何提供容错 118
5.1.3 什么是盘区 118
5.2 理解事务日志 118
5.3 估算数据库的空间需求 120
5.3.1 在估算数据库大小时需要考虑的因素 120
5.3.2 估算公式 121
5.4 创建数据库 121
5.4.1 创建新数据库的注意事项 121
5.4.2 使用Microsoft SQL Server企业管理器创建数据库 122
5.4.3 使用Transact-SQL语句创建数据库 124
5.5 设置数据库选项 127
5.5.1 自动选项 129
5.5.2 游标选项 130
5.5.3 恢复选项 130
5.5.4 SQL选项 131
5.5.5 状态选项 131
5.5.6 设置数据库选项的例子 132
5.6 使用SQL企业管理器修改数据库的大小 133
5.7 使用Transact-SQL语句修改数据库的大小 134
5.8 删除数据库 139
5.9 创建数据库对象 139
5.9.1 用户自定义数据类型 139
5.9.2 列的性质:IDENTITY属性 145
5.9.3 列的性质:全局唯一标识符 146
5.9.4 如何创建表 147
5.11 小结 152
5.10 添加和删除表中的列 152
第6章 Microsoft SQL Server的SQL语言 154
6.1 什么是查询语言 154
6.1.1 SELECT语句的语法 155
6.1.2 SQL Server查询工具概述 156
6.1.3 SQL查询分析器 157
6.1.4 OSQL实用工具 157
6.1.5 SQL Server企业管理器 157
6.2 简单查询 158
6.2.1 检索表中的所有列 158
6.2.2 检索表中的特定列 158
6.2.3 重排列序 159
6.2.4 用单引号加入字符串 159
6.2.5 改变列标题 160
6.2.6 算术运算符 161
6.2.7 操作数字型数据和数学函数 162
6.2.8 操作字符型数据和字符函数 164
6.2.9 操作日期型数据和日期函数 167
6.2.10 系统函数和安全函数 168
6.3 选择行 172
6.3.1 基于比较的选择行 173
6.3.2 基于范围选择行 174
6.3.3 基于列表选择行 175
6.3.4 基于字符选择行 175
6.3.5 基于未知值选择行 176
6.3.6 基于多个搜索条件选择行 177
6.3.7 消除重复行 177
6.3.8 结果排序 178
6.3.9 TOP子句 179
6.4 生成汇总数据 179
6.4.1 集合函数 179
6.4.2 GROUP BY和HAVING 180
6.4.3 COMPUTE和COMPUTE BY 183
6.4.4 用ROLLUP汇总数据 185
6.4.6 使用GROUPING区分空值 186
6.4.5 用CUBE汇总数据 186
6.5 连接查询 187
6.5.1 非限制连接 187
6.5.2 自然连接 188
6.5.3 两个以上表的连接 189
6.5.4 自连接 190
6.5.5 外连接 190
6.6 子查询 192
6.6.2 单列多值 193
6.6.1 单列单值 193
6.6.3 嵌套SELECT语句总结 194
6.6.4 相关子查询 195
6.6.5 存在性检查 196
6.7 在查询的基础上创建新表 197
6.8 合并数据集 198
6.9 数据操纵语言 199
6.9.1 数据的插入 199
6.9.2 数据的修改 200
6.9.3 数据的删除 201
6.10 用Transact-SQL编程 202
6.10.1 批处理和脚本 202
6.10.2 声明局部变量和赋值 203
6.10.3 全局变量 204
6.10.4 流控制语句 205
6.10.5 注释 207
6.10.6 示例 207
6.11 游标 210
6.11.1 游标的定义及优点 210
6.11.2 游标的用法 211
6.11.3 使用游标修改数据 214
6.11.4 游标小结 216
6.12 为library数据库插入数据 217
6.13 事务 233
6.13.1 什么是事务 233
6.13.3 如何标识一个事务 234
6.13.2 事务产生的原因--数据一致性问题 234
6.13.4 事务控制语句 235
6.13.5 SQL Server的锁机制 236
6.13.6 事务的隔离级别 238
6.13.7 死锁及其解除 239
6.13.8 锁超时 240
6.13.9 指定锁 240
6.13.11 锁机制小结 241
6.13.10 显示锁信息 241
6.13.12 如何向客户报告事务出错 242
6.13.13 在事务中不能包含的语句 243
6.13.14 小结 243
第7章 设计Microsoft SQL Server数据完整性 244
7.1 什么是数据完整性 244
7.2 实施方法 245
7.3 约束 245
7.3.1 一般语法 245
7.3.3 缺省约束 246
7.3.2 约束的命名准则 246
7.3.4 主键约束 247
7.3.5 检查约束 251
7.3.6 唯一约束 252
7.3.7 外键约束和参照约束 253
7.3.8 创建约束的一些选项 259
7.4.1 缺省的定义 260
7.4.2 创建缺省的语法 260
7.4 缺省 260
7.4.3 创建缺省的考虑 262
7.5 规则 262
7.5.1 规则的定义 262
7.5.2 创建规则的一般语法 262
7.5.3 创建规则的几点考虑 263
7.6 绑定 264
7.6.1 将缺省和规则绑定到列或用户定义的数据类型 264
7.6.2 解除缺省及规则 264
7.7 查看缺省和规则的定义脚本 265
7.6.3 删除缺省和规则 265
7.8 约束和缺省/规则的比较 266
第8章 创建Microsoft SQL Server的索引 267
8.1 综述 267
8.2 索引的一些考虑 267
8.2.1 为什么要创建索引 267
8.2.2 为什么不在每列上创建索引 268
8.2.4 不考虑创建索引的列 269
8.3 创建索引 269
8.2.3 考虑创建索引的列 269
8.3.1 一般语法 270
8.3.2 聚集索引的类型和特性 271
8.3.3 非聚集索引的类型和特性 273
8.3.4 唯一索引 275
8.3.5 复合索引 276
8.4 创建索引的选项 276
8.4.1 FILLFACTOR 276
8.5.1 表扫描/索引搜索 277
8.5 性能考虑 277
8.4.2 PAD_INDEX 277
8.5.2 索引分析 278
8.5.3 优化提示 280
8.5.4 UPDATE STATISTICS 281
8.5.5 DBCC SHOWCONTIG 282
8.6 查看索引信息和删除索引 288
8.7 全文索引 289
8.7.1 全文操作类系统存储过程 290
8.7.2 全文索引应用示例 293
8.7.3 全文查询 295
第9章 视图 297
9.1 什么是视图 297
9.2 如何创建视图 297
9.3 视图的优点和缺点 299
9.4 创建视图的例子 299
9.4.1 水平视图 299
9.4.2 投影视图 300
9.4.3 联合视图 301
9.4.4 包含计算列的视图 304
9.4.5 包含集合函数的视图 304
9.4.6 视图的视图 305
9.5 视图信息的查询 306
9.6 视图的修改和删除 309
9.7 视图的限制 310
9.8 使用索引视图 311
9.9 创建分区视图 312
第10章 存储过程和用户自定义函数 314
10.1 存储过程的定义 314
10.2 存储过程的优点 314
10.3 存储过程的创建 315
10.3.1 创建存储过程的步骤 315
10.3.2 执行存储过程 316
10.3.3 创建带输入参数的存储过程 317
10.3.4 创建带输出参数的存储过程 319
10.4 SQL Server如何处理存储过程 322
10.3.5 library数据库中的存储过程 322
10.5 重编译选项 333
10.5.1 CREATE PROCEDURE中的RECOMPILE 333
10.5.2 EXECUTE中的RECOMPILE 333
10.5.3 SP_RECOMPILE表名 333
10.6 查看、修改和删除存储过程 334
10.6.1 查看存储过程 334
10.6.2 修改存储过程 334
10.7.1 什么是扩展存储过程 336
10.7.2 使用扩展存储过程 336
10.6.3 删除存储过程 336
10.7 扩展存储过程 336
10.8 用户定义函数 339
10.8.1 标量函数 339
10.8.2 内嵌表值函数 340
10.8.3 多语句表值函数 341
10.8.4 创建用户定义函数的语法 343
10.8.5 修改和删除用户定义函数 345
第11章 触发器 346
11.1 触发器的定义和工作原理 346
11.1.1 触发器定义 346
11.1.2 触发器工作原理 346
11.2 创建触发器 346
11.2.1 一般语法 346
11.2.2 INSERT触发器 347
11.2.3 DELETE触发器 349
11.2.4 UPDATE触发器 350
11.2.5 触发器的组合 351
11.2.6 INSTEAD OF触发器 352
11.3 触发器实施数据完整性的例子 355
11.3.1 实现参照完整性 355
11.3.2 实施数据完整性 356
11.3.3 实现业务规则 357
11.4 查看、修改和删除触发器 357
11.4.1 查看触发器信息 357
11.4.3 删除触发器 359
11.4.2 修改触发器 359
11.5 触发器的限制和注意事项 360
11.5.1 触发器的嵌套 360
11.5.2 递归触发器 360
11.5.3 性能 361
11.5.4 触发器中不允许的语句 361
第12章 实现SQL Server的安全性 362
12.1 综述 362
12.2 Microsoft SQL Server的验证模式 362
12.2.1 Windows验证模式 363
12.2.2 混合模式 364
12.2.3 如何设置身份验证模式 365
12.2.4 Windows验证模式对Microsoft SQL Server的影响 366
12.2.5 安全帐户委托 367
12.3 创建登录名 368
12.3.1 将Windows帐号添加到Microsoft SQL Server 368
12.3.2 创建SQL Server登录名 369
12.4 管理数据库用户 372
12.3.3 系统登录名 372
12.3.4 查看登录的详细信息 372
12.4.1 数据库用户和登录名的关系 373
12.4.2 创建数据库用名 373
12.4.3 Guest用户 375
12.4.4 改变数据库所有权 375
12.5 删除数据库用户和登录 376
12.5.1 删除用户 376
12.5.2 删除登录名 376
12.6 角色 377
12.6.1 服务器角色和数据库角色 377
12.6.2 为服务器角色增加成员 379
12.6.3 为数据库角色增加成员 380
12.6.4 创建数据库角色 381
12.6.5 删除自定义的数据库角色 382
12.6.6 数据库用户、角色和系统表 383
12.7.1 对象和对象属主 384
12.7 权限管理 384
12.7.2 权限的分类 385
12.7.3 对象权限的授予、废除和拒绝 386
12.7.4 所有权链 393
12.7.5 可以控制语句权限的用户 396
12.7.6 语句权限的授予、废除和拒绝 397
12.7.7 语句权限和对象权限的关系 397
12.7.8 使用应用程序角色管理应用程序安全性 397
12.7.9 存放权限信息的系统表 398
12.7.10 系统管理员 399
12.7.11 怎样实现对象安全性 400
12.8 小结 401
第13章 调度作业和创建警报 402
13.1 SQL Server如何与MAPI相结合 402
13.2 SQL Server代理服务 404
13.3 创建作业 404
13.3.1 定义作业名称和分类 405
13.3.2 定义作业的工作步骤和工作内容 406
13.3.3 定义作业的调度信息 410
13.3.4 定义作业完成后的通知者 412
13.3.5 作业示例:创建、运行和查看历史记录 413
13.4 警报 415
13.4.1 警报的原理 415
13.4.2 创建警报的通知者--操作员 416
13.4.3 修改消息的设置,使得该消息可以记录在应用程序日志中 419
13.4.4 创建警报 420
13.4.6 事件转发 427
13.4.5 防故障操作员 427
13.5 msdb数据库 428
13.6 小结 429
第14章 备份Microsoft SQL Server的数据 430
14.1 为什么要备份 430
14.1.1 事务处理过程 430
14.1.2 备份定义 431
14.1.3 备份的两种分类 431
14.4 备份设备的类型 432
14.2 应该进行备份的时间 432
14.3 备份哪些数据 432
14.4.1 磁盘备份设备 433
14.4.2 磁带备份设备 433
14.4.3 命名管道备份设备 433
14.5 如何建立一个备份设备 434
14.6 管理备份设备 436
14.6.1 列出备份设备 436
14.6.2 查看备份设备的信息 437
14.6.3 删除一个备份设备 438
14.7 使用恢复模型 438
14.7.1 简单恢复 439
14.7.2 完全恢复 439
14.7.3 大容量日志记录恢复 440
14.7.4 如何选择恢复模型 441
14.7.5 切换恢复模型 442
14.8.1 备份的一般方法 443
14.8 备份数据库 443
14.8.2 完全备份 446
14.8.3 差异备份 448
14.8.4 事务日志备份 449
14.8.5 文件和文件组备份 450
14.8.6 备份过程中的限制 450
14.9 调度备份 450
14.10 备份系统数据库 452
14.10.1 备份master数据库 452
14.10.2 备份msdb数据库 453
14.10.3 备份distribution数据库 453
14.11 事务日志 453
14.12 检查点进程 454
14.13 小结 454
第15章 恢复Microsoft SQL Server的数据 456
15.1 恢复操作的步骤 456
15.3 准备恢复 457
15.2 自动恢复 457
15.3.1 检索备份集的首部信息 458
15.3.2 检索备份集内包含的数据库和日志文件的信息 460
15.3.3 验证备份 461
15.4 恢复用户数据库 462
15.4.1 恢复用户数据库 462
15.4.2 从一个完全数据库备份恢复 465
15.4.3 从事务日志备份中恢复和即时点恢复 468
15.4.4 从一个差异数据库备份恢复 471
15.4.5 从文件或文件组备份恢复 472
15.5 恢复系统数据库 474
15.5.1 从备份中恢复Master数据库 474
15.5.2 在没有有效备份的情况下恢复master数据库 475
15.5.3 恢复msdb数据库 476
15.6 小结 476
16.1 为什么要传输数据和转换数据 477
16.2 传输和转换数据的各种工具 477
第16章 传输数据 477
16.3 DTS的处理过程 478
16.4 DTS导入/导出向导 479
16.5 DTS设计器 488
16.5.1 指定数据源和数据目的 490
16.5.2 复制pubs数据库中的表 491
16.5.3 向包中添加任务 493
16.5.6 保存包 496
16.5.5 执行包 496
16.5.4 配置工作流 496
16.6 DTS包的编辑和查询 497
16.7 dtsrun命令行工具 497
16.8 在SQL Server之间复制对象 497
16.9 块拷贝程序 499
16.10 在Internet上发布数据 501
第17章 SQL Server复制 509
17.1 分发数据的一些方法 509
17.2.1 SQL Server复制的作用 510
17.2.2 什么是发布者/分发者/订阅者 510
17.2 复制的基本术语 510
17.2.3 可以复制和不可以复制的内容 512
17.2.4 复制中的三类服务器 513
17.3 六个复制代理程序 513
17.3.1 快照代理程序 513
17.3.2 日志读取器代理程序 515
17.3.3 分发代理程序 515
17.3.4 合并代理程序 516
17.3.5 队列读取器代理程序 516
17.3.6 杂项代理程序 516
17.4 三种复制类型 516
17.4.1 快照复制 516
17.4.2 事务复制 521
17.4.3 合并复制 523
17.5 物理复制模型 524
17.5.2 使用远程分发者的中央发布服务器 526
17.5.3 中央订阅服务器 526
17.5.1 中央发布服务器 526
17.5.4 多发布服务器/多订阅服务器 527
17.5.5 再次发布者 527
17.6 用于复制的服务器的必需配置 527
17.7 设置复制 528
17.7.1 指定分发服务器和创建发布项目 528
17.7.2 设置分布数据库 538
17.7.3 配置发布者 540
17.7.4 用请求订阅来设置订阅服务器及创建订阅 541
17.7.5 执行订阅操作 545
17.7.6 用强制订阅来设置订阅服务器及创建订阅 551
17.8 复制使用的系统表 554
17.9 如何使用复制监视器来维护复制 554
17.9.1 什么是复制监视器 554
17.9.2 所有订阅者都无法接收发布服务器的修改信息 555
17.9.3 很多订阅者中的一个无法接收修改信息 556
17.9.4 发布数据库的事务日志即将被填满或者已经被填满 556
17.10 小结 557
18.1.2 识别瓶颈 558
18.1.1 建立性能目标 558
第18章 监视和优化Microsoft SQL Server 558
18.1 为什么要监视SQL Server 558
18.1.3 分析瓶颈 559
18.1.4 使用监视工具 559
18.2 SQL Server日志和应用程序日志 560
18.2.1 SQL Server错误日志 560
18.2.2 SQL Server错误消息结构 562
18.2.3 Windows NT/2000事件日志 565
18.3 系统监视器 566
18.3.1 系统监视器的使用方法 566
18.3.2 磁盘考虑 569
18.3.3 内存考虑 570
18.4 使用企业管理器中的当前活动 571
18.4.1 进程信息 571
18.4.2 锁/进程ID 573
18.4.3 锁/对象 574
18.5.1 查看当前的锁 575
18.5 使用Transact-SQL语句监视SQL Server 575
18.5.2 查看当前服务器活动 576
18.5.3 查看数据库的数据空间使用信息 577
18.5.4 查看有关SQL Server活动和使用的常规统计信息 578
18.5.5 DBCC命令 578
18.6 DBCC和跟踪标志 584
18.7 SQL事件探查器 586
18.8 SQL查询分析器 590
18.9.1 用户表 595
18.9 修复被破坏的数据库 595
18.9.2 系统表 596
18.10 创建维护计划 596
18.11 其他的常见问题 602
18.11.1 事务日志满 602
18.11.2 连接问题 603
18.12 其他信息源 606
18.13 小结 606