目录 1
第1部分 SQL Server体系结构介绍 1
第1章 客户/服务器概念 1
1.1 客户/服务器计算的起源 1
1.1.1 基于主机的计算 2
1.1.2 基于PC/LAN的计算 2
1.2 客户/服务器的特点 4
24.2 升级到SQL Server for Windows NT 6. 5
1.3 关键因素是费用 5
1.4 本章小结 6
第2章 Microsoft客户/服务器体系结构介绍 7
2.1.1 多进程数据库引擎 7
2.1 各种数据库体系结构比较 7
2.1.2 多进程数据库引擎的优缺点 8
2.1.3 单进程、多线程数据库引擎 9
2.1.4 多线程数据库引擎的优缺点 10
2.1.5 用于Windows NT及对称式服务器体系结构的SQL Server 11
2.1.6 Microsoft SQL Server的线程服务 12
2.1.7 Windows NT的网络服务 13
2.1.8 Windows NT和磁盘系统 14
2.2 用于任何客户/服务器数据库的两个API 14
2.2.2 SQL是API吗 15
2.2.1 SQL Server的主语言API 15
2.3 本章小结 16
2.2.3 SQL Server是如何处理查询的 16
第3章 SQL Enterprise Manager介绍… 18
3.1 SQL-EM入门 18
3.1.1 服务器组 18
3.1.2 登记服务器 19
3.2 安全性 20
3.2.1 组 20
3.2.2 登录 21
3.3 设备 21
3.3.1 数据库设备 21
3.3.2 备份设备 23
3.4 服务器活动 23
3.4.1 监控服务器 24
3.4.2 调度任务 24
3.4.4 错误登记 25
3.4.2 警告提示 25
3.5 服务器配置 26
3.5.1 服务器选项 27
3.5.2 安全性选项 27
3.5.3 改变配置 27
3.6 系统工具 28
3.6.1 数据库的备份/恢复 28
3.6.2 数据库的对象/传输 28
3.6.3 查询工具——ISQL/w 29
3.7 数据库管理 29
3.7.1 表 29
3.7.2 索引 30
3.7.3 触发器、视图和存储过程 30
3.7.4 用户定义的数据类型 31
3.8 对象访问授权 31
3.8.1 按用户设置访问权限 31
3.8.2 按对象设置权限 32
3.9 复制 32
3.9.1 安装数据出版者 33
3.9.2 设置数据订阅者 33
3.10 帮助 33
3.11 本章小结 33
4.2.1 结构化查询语言 34
4.2 什么是Transact-SQL 34
4.1 SQL Server 6.5的新特点 34
第2部分 Transact-SQL程序设计 34
第4章 Transact-SQL介绍 34
4.2.3 SQL和Transact-SQL的用途 35
4.2.2 T-SQL和ANSI-SQL 35
4.2.4 T-SQL的语句、批处理和元素 36
4.2.5 服务器的处理步骤 36
4.2.6 如何测试SQL查询 37
4.3 用select检索数据 40
4.3.1 表、行和列 40
4.3.2 pubs数据库中的内容 40
4.3.3 从表中选择数据 40
4.3.4 用where来过滤行 46
4.3.5 利用order by对结果集合排序 51
4.3.6 检索集合数据 53
4.3.7 连接 58
4.3.8 子查询 62
4.3.9 union 65
4.4 使用select和into 66
4.5.1 插入指定的值 67
4.5.2 用select插入多行 67
4.5.3 省略列列表 67
4.5 用insert添加行 67
4.5.4 通过存储过程来插入 68
4.6 使用update来修改表行 68
4.7 使用delete来删除行 69
4.7.1 使用truncate table来清除一个表 69
4.8 本章小结 70
第5章 Transact-SQL的数据类型……… 71
5.1 SQL Server支持的数据类型 71
5.1.1 空值和数据类型 71
5.2.1 char和varchar 72
5.2 字符型和二进制数据类型 72
5.2.2 binary和varbinary 74
5.2.3 时间标记(timestamp) 75
5.2.4 文本和图像数据 77
5.3 datetime数据类型 80
5.3.1 datetime和smalldatetime的差别 80
5.3.2 datetime的插入 81
5.3.3 dateformat选项、语种和日期格式 81
5.3.4 如何查找日期 82
5.4 逻辑数据类型:bit 83
5.5 数值数据类型 84
5.5.1 整数类数据类型 84
5.5.2 浮点数据类型 85
5.5.3 精确数值类型 87
5.5.4 money数据类型 87
5.6 系统表和数据类型 88
5.7 本章小结 89
第6章 创建和修改数据库对象 90
6.1 SQL Server 6.5中的新特点 90
6.2 创建数据库对象 90
6.3 表 92
6.3.1 SQL Server对象命名 96
6.3.2 列的属性 97
6.3.3 identity列的注意事项 98
6.4 视图 99
6.4.1 在SQL-EM中使用视图 100
6.4.2 视图用作列安全措施 101
6.4.3 视图用作行安全措施 102
6.4.4 利用视图来简化SQL 102
6.4.5 视图与数据修改 103
6.4.6 带有check选项的视图 104
6.4.7 用with encryption创建的视图 105
6.4.8 视图信息的获取 105
6.5 重新命名对象 105
6.7 使用SQL-EM增添列 106
6.6 向表中添加列 106
6.8 临时表 107
6.8.1 全局临时表和永久临时表 107
6.9 规则 107
6.9.1 创建规则 108
6.9.2 规则的使用方法 108
6.9.3 规则的限制条件 109
6.9.4 用SQL-EM来创建规则 109
6.10 缺省值 110
6.10.3 声明缺省值 111
6.10.2 缺省值的使用方法 111
6.10.1 举例 111
6.10.4 SQL-EM中的缺省值 112
6.10.5 缺省值的使用限制 112
6.10.6 缺省值何时生效 113
6.10.7 update中的缺省值 113
6.11 查看规则和缺省值 113
6.12 用户定义的数据类型 114
6.12.1 创建用户定义的数据类型 115
6.12.2 用户定义的数据类型注意事项 115
6.12.3 定义和使用用户定义的数据类型 115
6.12.4 在SQL-EM中定义用户定义的数据类型 116
6.13 规则和缺省值的结合次序 116
6.14.3 非簇索引机制 117
6.14.4 簇索引和非簇索引的比较 117
6.14.2 簇索引机制 117
6.14.1 索引类型 117
6.14 索引 117
6.14.5 创建索引 118
6.15 使用SQL-EM管理索引 119
6.14.6 有关索引的注意事项 119
6.15.1 约束 122
6.15.2 主关键字和唯一性约束 122
6.15.3 核查约束 122
6.15.4 引用完整性约束 123
6.15.5 主关键字约束 124
6.15.6 外来关键字约束 125
6.15.7 使用约束注意事项 125
6.15.8 修改约束 126
6.15.9 增加约束 126
6.15.10 删除约束 127
6.15.11 使用SQL-EM来管理约束……… 127
6.15.12 约束的使用原则 128
6.16 数据完整性方法的比较 129
6.16.2 关键字 129
6.16.3 你选用哪一个 129
6.16.1 约束 129
6.17 本章小结 130
第7章 Transact-SQL编程结构 131
7.1 SQL Server 6.5中的新特点 131
7.2 对ANSI SQL的扩展 131
7.3 SQL Server函数 132
7.4 字符串函数 133
7.4.1 基本字符串操作与分析 133
7.4.2 soundex 134
7.4.3 在串内使用charindex来搜索 135
7.4.4 通配符 135
7.4.5 字符串函数例子 137
7.5 数学函数 138
7.6.1 日期部分 139
7.6 日期函数 139
7.6.3 日期转换 141
7.6.2 convert 141
7.7 系统函数 143
7.8 compute和compute...by 145
7.8.1 compute 145
7.8.2 compute by 146
7.9 isnull 148
7.9.1 nullif 149
7.9.2 coalesce 150
7.10 编程结构 150
7.10.1 批处理 151
7.10.2 注释 152
7.10.3 局部变量 153
7.10.4 全局变量 156
7.10.5 print 158
7.10.6 raiserror 159
7.10.7 条件执行语句:if...else 165
7.10.8 if exists 166
7.10.9 语句块:begin...end 166
7.10.10 重复执行语句:while 167
7.10.11 重复执行:goto 168
7.10.12 事件处理:waitfor 169
7.10.13 return 169
7.10.14 set选项 170
7.11 光标 170
7.11.1 一些方法 171
7.11.2 光标例子和某些句法 172
7.11.5 用光标修改数据 175
7.11.3 关闭光标 175
7.11.4 删除光标 175
7.11.6 滚动功能 176
7.11.7 Insensitive(不敏感)光标 177
7.11.8 避免使用光标 177
7.12 本章小结 178
第8章 Transact-SQL程序结构 179
8.1 触发器 179
8.1.1 触发器的优点和用途 179
8.1.2 什么时候不使用触发器 180
8.1.3 触发器的执行 180
8.1.4 创建触发器 181
8.1.5 特殊的触发器语法 188
8.1.6 触发器限制 191
8.1.7 触发器与事务 192
8.1.8 触发器应用程序 194
8.1.9 触发器小结 201
8.2.1 存储过程的优点 202
8.2 存储过程 202
8.2.2 运行存储过程 203
8.2.3 创建存储过程 203
8.2.4 SQL Server与临时存储过程 204
8.2.5 显示和维护 204
8.2.6 过程与参数 207
8.2.7 带参数运行 208
8.2.8 传入传出参数 209
8.2.9 返回过程的状态 210
8.2.10 SQL Server状态码 211
8.2.11 存储过程与事务 212
8.2.12 存储过程中的光标 213
8.2.15 过程中的对象引用 215
8.2.14 过程限制与注意事项 215
8.2.13 利用过程结果集合来插入数据 215
8.2.16 优化存储过程 216
8.2.17 远程存储过程 216
8.2.18 存储过程准则 217
8.2.19 存储过程调试技术 217
8.3 本章小结 217
第9章 事务管理 218
9.1 SQL Server 6.5中的新功能 218
9.2 事务是什么 218
9.3 事务编程 219
9.3.1 事务处理与批处理 220
9.3.2 保存点 221
9.3.3 嵌套的事务处理 222
9.4 事务与锁定 223
9.4.1 事务与触发器 224
9.4.2 @@trancount与隐式事务 224
9.5 事务与存储过程 225
9.4.3 触发器中的rollback transaction 225
9.6 长时间运行的事务 230
9.7 绑定的连接和多连接事务 230
9.7.1 如何绑定几个连接 231
9.7.2 与绑定连接有关的编程问题 233
9.8 本章小结 234
第3部分 性能与性能微调 235
第10章 如何定义性能期望值 235
10.1 希望得到什么 235
10.1.1 应该集中注意哪些指标 235
10.2 性能的定义 236
10.2.1 折衷考虑 237
10.2.2 常见的折衷方案 237
10.2.3 期望的性能指标 238
10.2.4 瓶颈 239
10.3 影响性能的几个可变因素 239
10.3.2 应用程序 240
10.3.1 物理结构 240
10.3.4 并发性 241
10.3.3 服务器 241
10.4 调整途径 242
10.5 本章小结 242
第11章 理解SQL Server的存储结构… 243
11.1 SQL Server的存储结构 243
11.2 分配页 245
11.3 数据页 249
11.3.1 数据行 250
11.3.2 估计行和表的大小 252
11.3.3 行偏移表 254
11.4 文本和图像页 255
11.5 索引和B树结构 256
11.5.1 簇索引 257
11.5.2 非簇索引 260
11.5.3 索引与性能 264
11.5.4 SQL Server索引维护 264
11.5.5 填充因子 268
11.6 更新与性能 270
11.6.1 推迟的更新 270
11.6.2 直接更新 271
11.7 本章小结 276
第12章 设计索引来优化性能 277
12.1 为什么使用索引 277
12.2 索引使用规则 277
12.3 索引与性能 278
12.5 索引的实用性评价 279
12.4 索引的选择 279
12.5.1 分布页 280
12.5.2 分布页中的内容 280
12.5.3 索引密度 283
12.5.4 查看分布页值 284
12.6 索引设计指南 285
12.6.1 簇索引指导 285
12.6.2 非簇索引指导 287
12.6.3 索引覆盖 289
12.6.4 复合索引与多重索引 291
12.6.5 多重查询的索引 292
12.7 本章小结 294
第13章 理解查询优化器 295
13.1 优化目标 295
13.2 查询优化步骤 295
13.3 查询分析 296
13.3.1 确定搜索参数(SARG) 296
13.3.2 or子句 298
13.3.3 join子句 300
13.3.4 展开查询 301
13.4 索引选择 302
13.4.1 评估SARG或or子句的索引 302
13.4.2 评估join子句的索引 303
13.4.3 索引分类 303
13.4.4 索引覆盖 304
13.5 连接顺序处理 305
13.5.1 确定连接顺序 305
13.5.2 处理大的多表查询 306
13.5.3 估计连接顺序开销 307
15.4 dbcc traceon(302)与dbcc traceon 310
13.5.4 重定策略 312
13.5.5 交叉连接和外层连接 313
13.6 优化group by,distinct和order by子句 314
13.6.1 group by 314
13.6.2 distinct 315
13.6.3 order by 315
13.7 方案选择 316
13.8 潜在的优化器问题 317
13.8.1 确保统计数据是最新的 317
13.8.2 检查SARG是否真正是SARG 317
13.8.3 检查索引是否真正覆盖了查询 317
13.8.4 确定存储过程是否是在不同参数的基础上被优化的 317
13.8.5 检查是否发生了重定 317
13.9 本章小结 318
第14章 存储过程的优化 319
14.1 存储过程及其性能优点 319
14.2 存储过程是如何优化的 320
14.3 存储过程的缺点 321
14.4 重编译存储过程 321
14.4.2 使用sp-recompile 322
14.4.1 自动重新编译 322
14.4.3 什么时候使用with recompile 323
14.4.4 什么时候使用sp-recompile 323
14.4.5 什么时候重编译不执行 323
14.4.6 with recompile的替代方法 323
14.5 本章小结 325
第15章 分析查询方案 326
15.1 使用和理解showplan 326
15.1.1 STEP〈stepnum〉 328
15.1.2 The type of query is〈查询类型〉 328
15.1.3 The type of query is SELECT(into aworktable) 328
15.1.5 矢量集合/标量集合 329
ROLLUP] 329
15.1.4 GROUP BY[WITH CUBE | 329
15.1.6 FROM TABLE 330
15.1.12 Worktable Created for ORDER BY|DISTINCT 331
15.1.8 Table Scan(表扫描) 331
15.1.9 Using Clustered Index(使用簇索引) 331
15.1.7 Nested iteration(嵌套重复) 331
15.1.11 Using Dynamic Index(使用动态索引) 331
15.1.10 Index:index-name 331
15.1.13 Worktable Created for REFORMAT-TING 332
15.1.14 Worktable created for SELECT IN-TO 333
15.1.15 The update mode is deferred|direct 333
15.1.16 [NOT]EXISTS:nested iteration 333
15.1.17 OR|AND EXISTS:nested iteration 334
15.1.18 SUBQUERY:nested iteration 334
15.1.19 WITH CHECK OPTION 335
15.1.20 CONSTRAINT:nested iteration 335
15.1.21 LEFT|FULL OUTER JOIN:nestediteration 335
15.2 用dbcc追踪标志分析查询方案 336
15.2.1 dbcc traceon(-1) 337
15.3 dbcc traceon(330) 338
15.2.2 3604、3605跟踪标志 338
15.4.1 理解dbce traceon(302)的输出 340
15.4.2 Index Statistic 344
15.4.3 什么时候分布项(步)不能使用 346
15.4.4 确定最终的开销估计及索引选择率 348
15.4.5 分析连接子句 349
15.4.6 理解dbcc traceon(310)的输出 352
15.5 使用statistics io及statistics time 362
15.5.1 statistics io 362
15.5.2 statistics time 365
15.6 本章小结 368
第16章 锁定与性能 369
16.1 锁定的需求 369
16.2 SQL Server锁的类型 369
16.2.1 共享锁 370
16.2.2 修改锁 371
16.2.3 独占锁 371
16.2.4 Transact-SQL语句及相关的锁 371
16.3 SQL Server锁定的粒度 372
16.3.1 表级锁定 372
16.3.2 大数据集的锁定逐步升级 373
16.3.3 Insert行级锁定 374
16.3.4 模拟行级锁定 375
16.3.5 利用光标来锁定 377
16.4 索引锁定 378
16.5 在SQL Server 6.0及以后版本中使用事务隔离级别 378
16.6 检查当前的锁定活动 380
16.6.1 使用sp-lock存储过程 380
16.6.3 使用Performance Manager来观察当前锁定的状况 381
16.7 配置SQL Server锁定 381
16.6.2 利用SQL Enterprise Manager来观察锁定活动 381
16.8 将锁定争用减至最小 383
16.8.1 减少每页的行数 383
16.9 死锁 384
16.9.1 如何降低死锁的可能性 385
16.9.2 检查死锁 387
16.10 本章小结 388
第17章 管理SQL Server优化器……… 389
17.1 超越优化器 389
17.2 强制索引选择 390
17.2.1 实例学习 392
17.2.2 本例的启示 393
17.3 强制连接顺序 393
17.3.1 临时表 395
17.4 查询级锁的选择 395
17.5 本章小结 397
第18章 数据库的设计和运行性能……… 398
18.1 数据库的物理设计和逻辑设计 398
18.2 数据库设计问题 398
18.3 什么是逻辑设计 399
18.3.1 规范条件 399
18.3.2 规范的形式 399
18.4 非规范化数据库 401
18.4.1 非规范化的优点 401
18.4.2 准则 401
18.3.5 规范化和数据设计图 401
18.3.4 规范化的缺点 401
18.3.3 规范化的优点 401
18.4.3 基本非规范化技巧 402
18.4.4 冗余数据 402
18.4.5 改变列定义 404
18.5 重定义表 405
18.5.1 数据划分 405
18.6 数据库设备与性能的关系 407
18.7 段 408
18.7.1 为什么采用段 410
18.7.2 段定义 411
18.7.3 放置对象到段上 412
18.7.4 如何停止使用段上的特定设备 413
18.8 RAID技术介绍 413
18.8.1 RAID第0级 414
18.8.2 RAID第1级 414
18.8.4 RAID第3级 415
18.8.3 RAID第2级 415
18.8.5 RAID第4级 416
18.8.6 RAID第5级 417
18.8.7 SQL Server和存储设备的性能 417
18.8.8 使用哪种RAID设备 418
18.8.9 SQL Server通常使用的RAID级 419
18.8.10 SQL Server和RAID——其他注意事项 419
18.8.11 基于硬件的RAID子系统 419
18.9 Windows NT条状集合 420
18.10 RAID与段的对比 420
18.11 本章小结 421
第19章 设计高性能的应用程序 422
19.1 平衡性能的考虑 422
19.1.1 服务器 422
19.2.1 减小查询的规模 423
19.1.3 服务器和客户能力的提示 423
19.2 网络是瓶颈 423
19.1.2 客户 423
19.2.2 减小结果集合 424
19.3 行处理 425
19.4 数据验证的方法 425
19.4.1 数据验证和性能 425
19.5 复杂事务处理 428
19.6 多服务器事务处理 430
19.7 一些建议 430
19.8 本章小结 430
第20章 高级SQL技术 431
20.1 聚合查询的解决 431
20.1.1 把having子句与group by组合一起 431
20.2.2 SQL Server如何处理包含工作表的查询 433
20.2 分组和工作表 433
20.2.1 工作表的作用 433
20.3.1 使用or的连接 434
20.3 连接处理中的特殊问题 434
20.4 超越优化器 436
20.4.1 优化时索引不存在 437
20.4.2 统计过期 437
20.4.3 设备的性能与所预料的不同 437
20.5 拆散大的查询 439
20.5.1 定义大的查询 440
20.5.2 如何拆散查询 440
20.5.3 建议 443
20.6 本章小结 443
第21章 其他与性能有关的主题 444
21.1 BCP与性能 444
21.1.1 最小数据装入时间 444
21.1.3 BCP与数据完整性 446
21.1.2 慢速BCP与登录 446
21.2 数据库维护与性能 447
21.3 tempdb(临时数据库)与性能 449
21.3.1 增加SQL Server的内存 449
21.3.2 将tempdb置于RAM中 449
21.3.3 将tempdb放到高速设备上 450
21.3.4 散布磁盘资源 450
21.3.5 其他tempdb性能提示 453
21.4 光标与性能 453
21.5 Text和Image列与性能 455
21.6 本章小结 456
第22章 通用性能优化技术及解决问题的 457
方法 457
22.1 过期或不可得到的统计值 457
22.2.2 负逻辑 458
22.2.1 没有SARG 458
22.2 查找参数问题 458
22.2.4 where子句中的未知常量 459
22.2.3 在where子句中列的操作 459
22.2.5 数据类型不匹配 461
22.2.6 where子句中的or逻辑 461
22.3 其他与查询有关的问题 462
22.3.1 distinct关键字 462
22.3.2 count()函数 462
22.3.3 集合语句 463
22.3.4 order by和group by 464
22.3.5 Join子句 465
22.3.6 提供所有可能的join子句 465
22.4 SQL Server配置 466
22.5.2 过多地引用索引 467
22.5.3 索引选择 467
22.5.1 索引 467
22.5 物理数据库设计 467
22.4.1 内存 467
22.5.4 簇索引 468
22.5.5 避免热点 468
22.5.6 DSS与OLTP 468
22.5.7 历史的与活动的数据 469
22.6 锁定 469
22.7 维护活动 469
22.8 本章小结 469
第4部分 系统管理 470
第23章 系统管理员的作用和职责……… 470
23.1 SQL Server的组成部分 470
23.2 SQL Server版本 471
23.3.2 系统管理员的职责 473
23.3 系统和数据库管理 473
23.3.1 系统管理员(sa)登录 473
23.4 系统表 474
23.4.1 数据库目录系统表 474
23.4.2 服务器目录系统表 475
23.5 系统存储过程 476
23.5.1 特性 476
23.5.2 有用的系统过程 478
23.6 本章小结 478
第24章 SQL Server的安装和连接…… 479
24.1 SQL Server硬件和软件需求 479
24.1.1 服务器的硬件特性 479
24.1.2 SQL Server软件需求 480
24.2.1 从4.2x升级至6.5时应注意的特殊事项 481
24.2.2 从6.0升级至6.5时应注意的特殊事项 482
24.2.3 通用升级信息 482
24.2.4 升级SQL Server和潜在的ANSI关键字冲突 482
24.2.5 怎样解决ANSI关键字冲突 484
24.2.6 利用现有4.2x和6.0的管理工具 485
24.3 为Windows NT和SQL Server选择一个文件系统 485
24.4 一步步地完成服务器安装 485
24.4.1 SQL Server安装路径 486
24.4.2 master设备的位置和大小 486
24.4.3 代码页和排序次序 486
24.4.4 SQL Server网络支持 487
24.4.5 自动启动SQL Server和SQL Execu-tive 488
24.4.8 可以登录了 489
24.4.9 如果登录不成功 489
24.4.6 服务器连接许可 489
24.4.7 联机文档 489
24.4.10 用shutdown关闭 490
24.5 客户端安装 490
24.5.1 DB-Library的组成部分 491
24.5.2 Windows 492
24.6 查错指南 492
24.6.1 SQL Server工作吗 492
24.6.2 你能从ISQL/w上访问SQL Server 492
吗 492
24.6.3 你能完全通过网络与物理服务器对话吗 493
24.6.4 昨天还是好的,怎么今天 493
24.6.5 你能在SQL Server上登录吗 493
24.6.6 是否只在用户数增加时出问题 493
24.7 改变缺省值——安装中最重要的10项设置 493
24.7.4 设置配置值 494
24.7.3 增加tempdb的大小 494
24.7.1 sa访问安全性 494
24.7.2 关闭master设备缺省状态 494
24.7.5 建立模型数据库对象、用户和数据类型 495
24.7.6 安装pubs数据库 495
24.8 本章小结 495
第25章 定义物理设备和镜像设备……… 496
25.1 用disk init命令初始化磁盘 496
25.1.1 disk init的参数 497
25.1.2 逻辑名 497
25.1.3 物理名 498
25.1.4 虚拟设备号 498
25.1.5 容量 498
25.1.6 虚拟地址 499
25.1.7 disk init举例 499
25.1.9 使用SQL Server Enterprise Manager 500
25.1.8 disk init命令的错误信息 500
25.1.10 disk init的结果 502
25.1.11 通过sp-dropdevice删除设备 504
25.2 使用缺省磁盘 505
25.3 扩展磁盘设备 507
25.4 磁盘镜像 507
25.4.1 disk mirror事件序列 509
25.4.2 磁盘镜像信息 509
25.4.3 取消磁盘镜像 509
25.4.4 磁盘重新镜像 510
25.5 设备SQL 512
25.6 通过SQL Enterprise Manager控制设备镜像 512
25.7 软件镜像、硬件镜像以及RAID 512
25.7.1 软件镜像 513
25.7.2 硬件镜像 513
25.8 本章小结 514
25.7.3 硬件RAID 514
第26章 定义、修改和维护数据库及日志 515
26.1 什么是数据库 515
26.1.1 数据库和空间管理 515
26.1.2 数据库和安全性 516
26.1.3 数据库和备份 516
26.2 系统数据库 516
26.3 创建数据库 517
26.3.1 create database句法 517
26.3.2 创建数据库实例 518
26.3.3 创建数据库时产生了哪些动作 519
26.3.4 用SQL Enterprise Manager来定义数据库 520
26.3.5 改变数据库的容量 521
26.3.6 数据库创建授权和数据库的拥有权 524
26.4.1 alter database的句法 525
26.4 扩大数据库的容量 525
26.4.2 增加日志空间 526
26.4.3 为日志分配空间 526
26.5 减小数据库的容量 527
26.6 探寻数据库 527
26.6.1 数据库系统表 529
26.6.2 使用SQL查询系统表 531
26.6.3 查看数据库空间使用状况 531
26.7 数据库选项 532
26.7.1 缺省的数据库选项 534
26.7.2 设置数据库选项 534
26.7.3 用SQL Enterprise Manager进行数据库选项设置 534
26.7.4 检查数据库的状态 535
26.8 model数据库 536
26.10 段和对象的设置 537
26.9 删除数据库 537
26.10.1 用段来提高性能 538
26.10.2 段用于控制 538
26.10.3 段的定义 538
26.10.4 预定义的段 540
26.10.5 在段上放置对象 540
26.10.6 从段中删除设备 543
26.10.7 获取段的信息 544
26.10.8 段系统表 544
26.10.9 查询syssegments 545
26.11 本章小结 545
第27章 安全性和用户管理 546
27.1 SQL Server安全等级 546
27.1.1 操作系统的安全问题 546
27.1.4 对象级安全性:许可 547
27.1.3 SQL Server数据库安全性:用户 547
27.1.2 SQL Server安全性:登录 547
27.2 SQL Server标准登录 548
27.2.1 特殊登录 550
27.2.2 通用登录 551
27.2.3 登录如何工作 551
27.2.4 修改登录信息 552
27.3 口令 552
27.4 SQL Server集成登录 552
27.4.1 配置集成登录安全性 553
27.4.2 配置SQL Server 553
27.4.3 通过NT用户管理器创建SQL用户 554
和工作组 554
27.4.4 将NT用户和工作组映射为SQL 555
Server登录 555
27.4.5 测试 556
27.4.6 SQL Server登录 557
27.5 数据库访问 557
27.5.1 添加用户 557
27.5.2 特殊用户 558
27.5.3 增加别名(可选项) 558
27.5.4 数据库访问如何进行 561
27.5.5 工作组 562
27.5.6 工作组如何工作 563
27.6 各种登录方法 563
27.6.1 SQL Server登录等于操作系统/应用程序登录 563
27.6.2 SQL Server登录独立于操作系统/应用程序登录 564
27.6.3 单个SQL Server登录 564
27.7 设置口令的方法 565
27.8 许可 566
27.7.3 口令独立于登录名 566
27.7.1 口令等于登录名 566
27.7.2 通用应用程序登录和口令 566
27.8.1 用户 567
27.8.2 对象的许可 567
27.8.3 命令许可 569
27.8.4 授予许可的方法 570
27.8.5 对象的相关性 572
27.9 本章小结 574
第28章 数据库日志与恢复 575
28.1 事务是什么 575
28.2 什么是事务日志 576
28.2.1 先写记录 576
28.2.2 提交 577
28.2.3 检查点(checkpoints) 578
28.2.4 恢复 579
28.3 本章小结 581
28.2.5 当事务日志装满时 581
第29章 DBCC 582
29.1 使用前的警告 582
29.2 处理数据碎块 583
29.2.1 dbcc showcontig 584
29.2.2 解决碎块问题 586
29.3 诊断和解决数据库错误 587
29.3.1 dbcc checkdb 587
29.3.2 dbcc checktable 590
29.3.3 dbcc checkcatalog 592
29.3.4 dbcc newalloc 592
29.3.5 dbcc textall和textalloc 595
29.3.6 dbcc fix-al 596
29.3.7 dbcc dbrepair 596
29.4 跟踪标志和其他有用的命令 597
29.4.4 一些有用的跟踪标志 598
29.4.3 tracestatus 598
29.4.1 traceon 598
29.4.2 traceoff 598
29.4.5 dbcc page 599
29.4.6 dbcc pglinkage 602
29.4.7 dbcc shrinkdb 603
29.4.8 dbcc opentran 604
29.4.9 dbcc updateusage 605
29.5 dbcc和性能 605
29.5.1 dbcc memusage 605
29.5.2 dbcc pintable 605
29.5.3 dbcc sqlperf 606
29.6 本章小结 611
30.1 为什么要备份 612
30.2 作用及职责 612
第30章 SQL Server数据库的备份及还原 612
30.3 备份的类型 613
30.4 备份设备 613
30.4.1 磁带设备 613
30.4.2 磁盘设备 614
30.4.3 增加备份设备 614
30.5 SQL Server 6.5的备份功能 615
30.5.1 用SQL Enterprise Manager生成备份设备 616
30.6 备份及恢复命令 616
30.6.1 备份数据库 617
30.6.2 使用SQL Enterprise Manager备份数据库 618
30.6.3 备份事务日志 619
30.6.4 用SQL Enterprise Manager备份事务日志 620
30.6.5 备份单个表 621
30.6.6 还原数据库 622
30.6.8 在灾难后还原 623
30.6.7 使用SQL Enterprise Manager还原数据库 623
30.6.9 还原事务日志 625
30.6.10 还原单个表 626
30.6.11 还原至一个指定的时间点 627
30.6.12 备份和还原历史 628
30.7 备份时的其他考虑因素 628
30.7.1 备份的频率 628
30.7.2 分区备份 629
30.7.3 锁定 629
30.7.4 获取统计信息 629
30.8 记录事务日志 630
30.8.1 监视可用的日志空间 630
30.9 制定备份及恢复计划 631
30.9.1 系统数据库 631
30.9.2 用户数据库 633
30.9.3 超大规模数据库的考虑因素 634
30.10 本章小结 635
第31章 配置并调整SQL Server……… 636
31.1 配置变量 636
31.2 用SQL Enterprise Manager设置配置选项 639
31.2.1 可配置的值 639
31.2.2 使用较多内存的变量 659
31.3 本章小结 659
第32章 优化SQL Server配置选项…… 660
32.1 内存使用 660
32.1.1 确定SQL Server 6.5的最优内存配置 662
32.1.2 使用tempdb in RAM选项 663
32.2 使用dbcc memusage来确认内存配置 664
32.3 配置锁定升级值 668
32.4 优化SQL Server并行读操作 669
32.5 本章小结 675
第33章 测量SQL Server的系统性能… 676
33.1 为什么要测量性能 676
33.2 Performance Monitor是什么 676
33.3 SQL Server性能计数器的监视内容 678
33.3.1 监视处理器 678
33.3.2 监视内存 678
33.3.3 监视磁盘 678
33.3.4 监视网络 679
33.3.5 监视SQL Server对象 679
33.4 使用dbcc sqlperf 679
33.5 本章小结 680
第34章 远程服务器管理 681
34.1 定义 682
34.2.1 第1步:命名服务器 683
34.2 远程访问指南 683
34.2.2 第2步:配置用于远程访问的每个服务器 684
34.2.3 第3步:映射远程登录及用户 684
34.2.4 第4步:设置用于口令检查的远程选项 684
34.3 用sp-addserver添加服务器 684
34.4 用sp-dropserver删除服务器 685
34.5 用sp-addremotelogin添加远程登录 685
34.5.1 使用远程ID作为本地ID 685
34.5.2 为所有远程登录使用单一本地登录 685
34.5.3 为所有远程用户使用一个新的本地名 686
34.6 用sp-dropremotelogin删除登录 686
34.7 远程选项 686
34.8 在远程服务器上获取信息 687
34.9 使用扩展存储过程和Open Data Services 687
34.10 本章小结 689
35.1 SQL Server Enterprise Manager(SQL-EM) 690
第35章 Microsoft SQL Server分布式管理框架 690
35.2 SQL Executive、意外处理和任务安排 691
35.2.1 SQL Executive 691
35.2.2 任务处理术语 693
35.2.3 任务执行特性和安排 693
35.2.4 例外处理 694
35.2.5 任务执行和跟踪 695
35.2.6 msdb数据库 696
35.3 SQL分布式管理对象(SQL-DMO) 697
35.4 如何配置任务、操作员和警报 698
35.4.1 定义任务 698
35.4.2 监视任务的执行 701
35.4.3 配置操作员 701
35.4.4 配置警报 702
35.5 本章小结 704
36.1 数据分布技术介绍 705
第36章 Microsoft SQL Server 6.5 Repli-cation介绍 705
36.2 SQL Server复制 707
36.2.1 SQL Server复制的名词术语 708
36.2.2 SQL Server复制模型 710
36.2.3 SQL Server复制处理 712
36.3 SQL Server复制的配置预备 714
36.4 配置简单的一对多复制模型 714
36.4.1 设置SQL Server的配置选项 714
36.4.2 配置服务器出版和分布服务器 715
36.4.3 配置订阅服务器 716
36.4.4 创建出版物和文章 717
36.4.5 定义出版物和文章的订阅 720
36.4.6 下一步是什么 722
36.5 本章小结 722
37.1 SQL Server环境的开发途径 723
37.1.1 理解环境 723
第37章 定义系统管理和命名标准……… 723
37.1.2 开发环境 724
37.1.3 测试环境 728
37.1.4 生产环境 729
37.2 命名标准 729
37.2.1 使用指示器 729
37.2.2 选择总体方法 731
37.3 SQL Server中的命名 733
37.3.1 命名服务器 733
37.3.2 命名数据库 734
37.3.3 命名表、视图和列 734
37.3.4 命名索引 734
37.3.5 命名规则和缺省值 734
37.3.9 命名约束条件 735
37.3.8 命名触发器 735
37.3.7 命名存储过程 735
37.3.6 命名用户定义的数据类型 735
37.3.10 数据库设备命名标准 736
37.3.11 转储设备命名标准 737
37.4 操作系统命名 738
37.4.1 目录命名标准 739
37.4.2 文件命名标准 741
37.4.3 源代码控制 742
37.5 缩写标准 743
37.6 本章小结 744
第38章 管理超大规模SQL Server数据库 745
38.1 什么是VLDB 745
38.2 VLDB维护问题 745
38.3 维护数据库转储和装入 745
38.3.1 开发VLDB备份/恢复过程 747
38.4.1 开发一致性检查计划 748
38.4 检查数据库的一致性 748
38.5.1 更新统计资料 750
38.5.2 update statistics的安排 750
38.5 数据维护 750
38.5.3 清除/归档过程 751
38.6 数据分区选项 756
38.6.1 垂直数据分区 756
38.6.2 水平数据分区 758
38.7 本章小结 759
第5部分 开放式客户编程介绍 760
第39章 MS SQL Server客户/服务器编程介绍 760
39.1 SQL Server如何适应客户/服务器模型 760
39.2 SQL Server的编程方法 762
39.2.1 Transact-SQL 762
39.2.2 DB-Library和Net-Library 762
39.3 发送一个查询后所发生的事情 763
39.2.3 Open Data Services(ODS) 763
39.4 本章小结 765
第40章 SQL Server的客户应用程序接口 766
40.1 DB-Library编程介绍 766
40.1.1 Visual Basic和DB-Library 767
40.1.2 使用DB-Library API的优缺点 767
40.2 ODBC编程介绍 768
40.2.1 ODBC核心API的一致性要求 768
40.2.2 ODBC第1级的一致性要求 769
40.2.3 ODBC第2级API的一致性要求 769
40.2.4 ODBC SQL一致性级 769
40.2.5 ODBC对最终用户带来的益处 770
40.2.6 ODBC对应用程序开发人员带来的益处 770
40.2.7 ODBC对数据库开发人员带来的益处 770
40.4.1 数据访问对象(DAO) 771
40.4 DAO,RDO和MFC数据库类 771
40.3 透视ODBC的性能 771
40.4.2 RDO和ODBC MFC类 772
40.5 DB-Library与ODBC及客观存在的高级API之间的对比 773
40.6 编程工具 774
40.6.1 可视编程工具 774
40.6.2 语言编译程序工具 775
40.6.3 处理数据的桌面应用程序和报表工具 775
40.7 本章小结 776
第41章 规划SQL Server应用程序…… 777
41.1 安装客户接口 777
41.2 配置DB-Library和ODBC 778
41.2.1 使用Client Configuration Utility 778
41.2.2 自动地配置客户 779
41.2.3 配置ODBC的客户 780
41.3 连网考虑 783
41.3.1 客户端的处理与服务器端的处理 784
41.4 本章小结 786
第42章 SQL Server的DB-Library编程 787
42.1 入门准备 787
42.1.1 DB-Library的文档和资源 787
42.1.2 VBSQL与在C中进行DB-Library编程的对比 787
42.1.3 DB-Library程序的可移植性 787
42.2 样例应用程序 788
42.2.1 初始化VBSQL和出错处理程序 789
42.2.2 打开SQL Server连接 790
42.2.3 发送查询 791
42.2.4 检索结果 792
42.2.5 计时、基准测试及限制 795
42.3 本章小结 796
43.1.2 Visual Basic与C的比较 797
43.1.1 ODBC文档及资源 797
43.1 入门准备 797
第43章 SQL server的ODBC编程…… 797
43.1.3 ODBC程序的可移植性 798
43.2 样例应用程序 798
43.2.1 ODBC查询的例子 798
43.2.2 ODBC绑定列实例程序 802
43.2.3 RDO/DAO实例代码 804
43.2.4 计时和性能测试 805
43.3 本章小结 806
第6部分 SQL Server和World Wide Web 807
第44章 用SQL Server构造Web页…… 807
44.1 使用Internet Information Connector 807
44.1.1 创建输入窗体 809
44.1.2 创建Internet Database Connector接口文件 812
44.1.3 创建Internet Database ConnectorHTML模板 815
44.2 使用SQL Server Web Assistant 822
44.3 本章小结 827
第7部分 附录 828
附录A DB-Library快速参考 828
A.1 核心函数 828
A.2 光标函数 831
A.3 存储过程函数 832
A.4 文本及图像函数 833
A.5 浏览函数 833
A.6 批量复制函数 834
A.7 两阶段提交函数(仅适用于C/C++开发) 835
附录B 与本书附带CD-ROM有关的法律 836
协议 836
附录C 本书所配CD-ROM上的内容…… 837
C.1 在Windows 95/NT 4.0上的安装步骤 837
C.2 在Windows NT 3.51上的安装步骤 837