《Microsoft SQL Server6.5技术内幕》求取 ⇩

第1章 Microsoft SQL Server的演变过程: 从1989年到1996年3

1.1 竞争的背景产生了Microsoft SQL Server3

第1部分 概述3

1.2 早期的NDK5

1.3 Mocrosoft SQL Server的正式发布6

1.4 开发工作的加强8

1.5 OS/2和“友好的火力”9

1.6 4.2 版本10

1.7 OS/2 2.0的发布延迟了11

1.7.1 4.2版本发布了11

1.8 Windows NT上的SQL Server12

1.10 合作开发的结束17

1.11 SQL 95 的费用18

1.12 下一个版本21

2.1 引言22

2.2 SQL Server引擎22

2.2.1 Transact-SQL22

第2章 游历Microsoft SQL Server22

2.3 DBMS—强制性的数据完整性27

2.3.1 说明性参照完整性27

2.3.2 数据类型28

2.3.4 默认值29

2.3.5 触发器29

2.3.3 CHECK约束和规则29

2.4 事务处理30

2.4.3 隔离性31

2.4.2 一致性31

2.4.4 耐久性31

2.4.1 原子性31

2.5.1 传统的进程/线索模型32

2.5.2 Microsoft SQL Server的进程/线索模型32

2.5 对称的服务器结构32

2.5.3 多用户性能33

2.6 安全性33

2.6.1 监测与管理安全性34

2.7 高度的有效性35

2.8 分布式的数据处理35

2.9 数据复制37

2.10 系统管理38

2.10.1 SQL Enterprise Manager38

2.10.2 分布式的管理对象39

2.10.3 Automation 和Visual Basic脚本40

2.10.4 SQL Executive42

2.11.1 SQL Server Web Assistant 和访问Internet43

2.11.2 SQL Trance43

2.11 SQL Server工具软件和扩展43

2.11.4 与Windows NT Performance Monitor集成44

2.11.5 SQL Security Manager44

2.11.3 SQL Service Manager44

2.11.6 SQL Client Configration Utility45

2.11.7 SQL Server安装程序45

2.11.9 大批量拷贝工具46

2.11.10 与SNMP结合46

2.11.8 ISQL/w和ISQL46

2.12.1 DB-Library47

2.12 开发界面47

2.12.2 ODBC47

2.11.11 SQL Server的联机阅读文档47

2.12.3 ESQL for C48

2.12.4 Open Data Services48

小结49

3.2 SQL Server引擎53

3.1 概述53

3.2.1 网库53

第3章SQL Server的结构53

第2部分 体系结构概述53

3.2.2 Open Data Services56

3.2.4 远程存储过程调用的处理器59

3.2.5 序化器和优化器59

3.2.3 命令分析器59

3.2.6 执行器61

3.2.7 搜索管理器61

3.2.8 数据库和页管理器62

3.2.9 事务管理器62

3.2.10 加锁管理器65

3.2.11 行操作管理器、索引管理器、文本管理器66

3.2.12 缓冲区管理器和日志写人器72

3.3 大内存问题76

3.3.1 快速访问内存中的页76

3.3.2 快速访问空闲页(Lazywriter)77

3.4 事务日志和恢复78

3.4.1 加锁和恢复79

3.4.2 时戳和恢复80

3.5 SQL Server的内核以及SQL Server与Windows NT的相互作用81

3.5.1 线索和对称多处理83

3.5.2 工作人员线索池84

3.5.3 可伸缩性、性能和测试准则86

小结89

4.1 安装虽易,但考虑仍需周全93

第4章 规划和安装SQL Server93

4.2 SQL Server与SQL工作站93

第3部分 应用SQL Server93

4.3.1 使用与Windows硬件兼容的硬件94

4.3.2 选择好的处理器94

4.3 选择硬件94

4.3.3 性能等于处理器周期、内存和I/O吞吐率的综合效果95

4.3.4 要舍得在测试程序上花钱96

4.4 硬件指导原则97

4.4.1 处理器97

4.4.2 内存100

4.4.3 磁盘驱动器、控制器和磁盘组101

4.4.4 RAID方法102

4.4.5 关于驱动器和控制器的进一步说明111

4.4.6 使用不间断电源112

4.4.7 检测磁盘子系统113

4.4.8 撤退型服务器功能113

4.4.9 其它硬件方面的考虑114

4.5 操作系统114

4.6 文件系统115

4.7 安全性和用户环境116

4.8 选择许可证117

4.8.1 Internet许可证119

4.8.2 许可证限制119

4.9 网络协议选择121

4.10 字符集和排序顺序问题124

4.10.1 字符集124

4.10.2 排序顺序126

1.9 成功带来的巨大变化126

4.11 运行安装程序131

4.12 安装后的基本配置132

4.13 无值守安装和远程安装134

4.13.1 远程安装135

4.13.2 无值守安装135

4.13.3 在最初安装后使用安装程序137

小结138

第5章 数据库和设备139

5.1 什么是数据库?139

5.2 数据库设备140

5.2.1 建立数据库设备140

5.2.2 设备号142

5.2.3 扩充设备143

5.2.4 默认设备143

5.2.5 挂接和脱开设备144

5.2.6 与设备的建立和安装有关的错误144

5.2.7 镜象功能145

5.3 建立数据库145

5.3.1 分离事务日志147

5.4 数据库的最大化和分片148

5.5 扩充和收缩数据库148

5.6 数据库内幕149

5.7 数据库选项151

5.8 改变数据库选项152

5.9 有关数据库其它方面的考虑153

5.9.1 FOR LOAD选项153

5.9.2 数据库与模式有差别154

5.9.3 可移动介质154

5.9.4 专门的系统数据库155

小结156

6.1 引言157

6.2 建表157

第6章 表157

6.2.1 命名表和列158

6.2.2 关键字和保留字158

6.2.3 命名约定160

6.2.4 数据类型161

6.3 内部存储细节166

6.3.1 数据页167

6.3.2 查看数据页169

6.3.3 数据行171

6.3.4 偏移表和调节表172

6.3.5 定长行和变长行的存储方法172

6.4 索引175

6.4.2 非群聚索引176

6.4.1 群聚索引176

6.4.3 建立索引178

6.5 用户定义的数据类型179

6.6 Identity属性182

6.7 约束185

6.7.1 主键和唯一性约束185

6.7.2 FOREIGN KEY(外键)约束189

6.7.3 约束检查方法195

6.7.4 关于删除表的限制196

6.7.5 自引用表197

6.7.6 参照动作198

6.7.7 CHECK约束199

6.7.8 “默认”约束202

6.7.9 关于约束的进一步说明206

6.8 临时表212

6.8.1 私人临时表(#)212

6.8.2 共用临时表212

6.8.3 直接使用tempdb213

6.8.4 对临时表的约束213

小结213

第7章 查询数据215

7.1 引言215

7.2 SELECT语句215

7.3 联结218

7.3.1 外联结221

7.3.2 废弃外联结运算符225

7.4 处理NULL231

7.4.1 现时世界中的NULL234

7.4.2 IS NULL和=NULL236

7.5 子查询239

7.5.1 相关子查询243

7.6 视图和导出表249

7.7 其它搜索表达式252

7.7.1 LIKE252

7.7.2 BETWEEN256

7.7.3 集合函数257

7.7.4 利用集合函数的计算结果从不同的角度查看数据262

7.7.5 CUBE263

7.7.6 ROLLUP271

7.7.7 UNION275

小结280

第8章 修改数据281

8.1 引言281

8.2 基本的修改操作281

8.2.1 INSERT281

8.2.2 UPDATE291

8.2.3 DELETE294

8.2.4 通过视图修改数据295

8.2.5 WITH CHECK OPTION选项300

8.3 内部细节和性能方面的考虑303

8.3.1 行的定位303

8.3.2 更新策略304

8.3.3 示例311

8.3.4 加锁问题320

小结321

第9章 利用Transact-SQL编程322

9.1 引言322

9.2 作为编程语言的Transact-SQL322

9.3 Transact-SQL编程结构-基本知识325

9.3.1 变量325

9.3.2 流控制工具327

9.3.3 CASE327

9.3.4 CASE的变形331

9.2.5 注解332

9.2.6 PRINT和RAISERROR333

9.3.7 运算符336

9.3.8 标量函数341

小结362

第10章 批处理、事务、存储过程和触发器363

10.1 引言363

10.2 批处理文件363

10.3 事务364

10.3.1 明确的事务和隐含的事务365

10.3.2 在事务中查错365

10.3.3 事务隔离等级370

10.4 存储过程377

10.3.4 事务的附加特性377

10.4.1 嵌套的存储过程379

10.4.2 存储过程中的递归技术379

10.4.3 嵌套的事务块383

10.4.4 保存点387

10.4.5 存储过程的参数387

10.5 批处理文件的处理和存储过程的存储388

10.5.1 存储过程的存储392

10.5.2 将存储过程加密392

10.5.3 临时的存储过程394

10.5.4 系统存储过程和专用的“sp-”前缀396

10.5.5 自动启动存储过程397

10.5.6 系统存储过程398

10.5.8 SQL Exective存储过程399

10.5.7 类目存储过程399

10.5.9 复制存储过程400

10.5.10 扩展存储过程400

10.6 触发器405

10.6.1 重新执行一个触发器406

10.7 调试存储过程和触发器408

10.7.1 构造并执行一个字符串411

10.8 操作文本和图象数据411

10.8.1 WRITETEXT413

10.8.2 READTEXT415

10.8.3 UPDATETEXT418

10.9.1 区分大小写422

10.9 环境方面的注意事项422

10.9.2 NULL值和ANSI一致性设置423

10.9.3 针对本地的SET选项427

小结427

第11章 光标428

11.1 引言428

11.2 光标的基本知识428

11.3 光标和ISAM430

11.3.1 ISAM: 过多的命令和网络交通433

11.3.2 ISAM: 过量地使用服务器资源433

11.3.3 ISAM: 不必要的长事务434

11.4 光标模型434

11.4.1 Transact-SQL光标434

11.4.3 客户光标435

11.4.2 API服务器光标435

11.4.4 默认的结果集436

11.4.5 API服务器光标和Transact-SQL光标之比较437

11.5 适度使用光标438

11.5.1 逐行操作438

11.5.2 查询操作439

11.5.3 滚动应用程序440

11.5.4 选择光标模型441

11.5.5 光标的成员、滚动和对修改的敏感度441

11.6 Transact-SQL光标的句法和行为446

11.6.1 DECLARE446

11.6.2 OPEN447

11.6.3 FETCH448

11.6.6 CLOSE449

11.6.4 UPDATE449

11.6.5 DELETE449

11.6.7 DEALLOCATE450

11.6.8 Transact-SQL 光标的行为450

11.6.9 最简单的光标句法452

11.6.10 完全可滚动的Transact-SQL光标452

11.6.11 利用Transact-SQL光标控制并发性453

小结460

第12章 Transact-SQL示例和编程之谜461

12.1 引言461

12.2 用触发器实现参照动作461

12.3.1 生成测试数据467

12.3 编程之谜467

12.3.2 查找前n个值471

12.3.3 获取排队顺序474

12.3.4 时间序列问题: 查找不同时间段间的差异484

12.3.5 累计求和问题489

12.3.6 隔n行采样问题490

12.3.7 查找含匹配列的行490

12.3.8 将数据放到一个Web页上——快速方法494

12.3.9 扩充层次结构(或称“物料帐单问题”)495

12.3.10 用选择的方法取代迭代500

12.3.11 获取表中的行数——最快方法501

12.3.12 保存计算列502

12.3.13 数据透视表(或称“交叉表”)503

12.3.14 将SQL Server与e-mail集成506

12.3.15 模拟一个分布式查询511

12.3.16 模拟一个分布式、分区式插入512

12.3.17 将文本复制到有序的varchar型列中513

12.3.18 实例化并执行一个自动对象516

小结517

第13章 加锁518

13.1 引言518

13.2 加锁管理器518

13.2.1 加锁管理器和隔离等级518

13.2.2 自旋锁519

13.2.3 死锁520

13.3 用户数据的加锁类型522

13.2.4 加锁和内存522

13.5 加锁的兼容性524

13.4 查看加锁524

13.5.1 约束连接526

13.5.2 行加锁和页加锁526

13.5.3 插入行加锁527

13.6 加锁升级529

13.7 加锁暗示和应用程序问题530

小结530

第四部分 性能与调整533

第14章 设计和查询性能533

14.1 引言533

14.3 提高开发组中各成员的技术水平534

14.2 关于性能的指导原则534

14.4 强化应用程序和数据库的设计535

14.4.1 数据库的规范化535

14.4.2 评估你的关键事务536

14.4.3 使表的行长和键值尽可能紧凑538

14.5 描述峰值时性能需求539

14.6 交互系统的响应时间问题539

14.7 贯穿整个开发过程的模型化、测试标准和测试541

14.7.1 开发过程中的方法论542

14.8 建立有用的索引544

14.8.1 创建有用索引的指导原则544

14.10 明智地使用光标548

14.9 选择适当的硬件548

14.12 使网络的往返次数最小化549

14.11 尽量使用存储过程549

14.13 并发性与一致性间的权衡550

14.14 分析并解决加锁(阻塞)问题551

14.14.1 解决阻塞问题的指导原则552

14.15 分析并解决死锁问题553

14.15.1 循环死锁的示例553

14.15.2 转换死锁的示例554

14.15.3 页分裂引发的死锁555

14.15.4 阻止死锁的发生556

14.15.5 处理死锁现象而不阻止它发生557

14.15.8 找出故障的原因559

14.15.6 自愿成为死锁的牺牲者559

14.15.7 行加锁和死锁559

14.15.9 监视加锁活动563

14.6 分裂OLTP和DSS应用程序569

14.17 监测和调试查询570

14.17.1 优化器570

14.18 监测查询性能585

14.18.1 STATISTICS IO585

14.18.2 STATISTICS TIME586

14.18.3 SHOWPLAN ON586

14.18.4 观察优化器的决策过程587

14.18.5 使用优化器和加锁暗示593

小结596

15.1 引言597

15.2 检查和调整Windows NT配置设置597

15.2.1 Windows NT任务管理597

第15章 配置与性能监测597

15.2.2 Windows NT Server的资源分配598

15.2.3 Windows NT服务器PAGEFILE.SYS位置598

15.2.4 Windows NT文件系统选择599

15.2.5 次要的Windows NT服务599

15.2.6 Windows NT网络协议599

15.3 检查和调整SQL Server配置参数599

15.3.1 影响整个服务器的选项: sp-configure设置599

15.3.3 插入行加锁616

15.3.2 数据库选项616

15.3.4 缓冲区管理器选项617

15.3.5 SQLSERVR.EXE的启动参数618

15.4 维护系统619

15.5 监测系统性能619

15.5.1 性能监测器计数器620

15.5.2 监测性能的其它考虑624

小结624

第5部分 附录627

附录1 SQL Server的内置共用变量627

附录2 推荐读物630

参考文献634

1999《Microsoft SQL Server6.5技术内幕》由于是年代较久的资料都绝版了,几乎不可能购买到实物。如果大家为了学习确实需要,可向博主求助其电子版PDF文件(由(美)(R.绍库普)Ron Soukup著;姜鸿英等译 1999 北京市:清华大学出版社 出版的版本) 。对合法合规的求助,我会当即受理并将下载地址发送给你。