作者为美国的Kalen Delaney。通过学习本书对SQL Server 2000引擎的正式指导,可以掌握目前首选的关系数据库管理系统(ROBMS)的内部工作方式。本书是由著名作家与产品开发小组成员共同编写的,对于那些需要了解SQL server内部结构如何影响应用程序的开发和功能的读者来说,这都是一本必备和必读之书。本书广泛、深入地介绍了关于最新的产品增强和更新安装、管理及开发服务等内容。通过阅读本书,可以帮助您理解如何创建高性能的数据仓库、事务处理和决策支持的应用程序,以适应您面临的各种新的挑战。
此主题相关图片如下:
详细目录:
第一部分 概述
第一章 Microsoft SQL Server的演变过程:从1989年到2000年
1.1 SQL Server:初期阶段
1.2 Ron的故事
1.3 Kalen的故事
1.4 Microsoft SQL Server的发布
1.5 开发角色的演变
1.6 OS/2和友好的攻击
1.7 SQL Server 4.2
1.7.1 即将发布的OS/2 2.0
1.7.2 4.2版本的发布
1.8 用于Windows NT的SQL Server
1.9 成功带来的巨大变化
1.10 合作开发的结束
1.11 管理SQL95
1.12 下一版本
1.13 Sphinx的秘密
1.14 新世纪的软件
第二章 介绍SQL Server
2.1 SQL Server引擎
2.1.1 Transact-SQL
2.2 DBMS强制的数据完整性
2.2.1 声明数据完整性
2.2.2 数据类型
2.2.3 CHECK约束和规则
2.2.4 默认值
2.2.5 触发器
2.3 事务处理
2.3.1 原子性
2.3.2 一致性
2.3.3 孤立性
2.3.4 持久性
2.4 对称服务器构架
2.4.1 传统的进程/线程模式
2.4.2 SQL Server的进程/线程模式
2.4.3 多用户性能
2.5 安全性
2.5.1 监视和管理安全性
2.6 较高的可用性
2.7 分布式数据处理
2.8 数据复制
2.9 系统管理
2.9.1 SQL Server Enterprise Manager
2.9.2 Distributed Management Objects
2.9.3 Windows Management Instrumentation
2.9.4 SQL-DMO和Visual Basic脚本
2.9.5 SQL Server Agent
2.10 SQL Server的实用程序和扩展
2.10.1 Web Assistant Wizard和Internet启用
2.10.2 SQL Profiler
2.10.3 SQL Server Service Manager
2.10.4 System Monitor的集成
2.10.5 Client Network实用程序
2.10.6 Server Network实用程序
2.10.7 SQL Server的安装
2.10.8 OSQL和ISQL
2.10.9 SQL Query Analyzer
2.10.10 大量复制和数据传输服务
2.10.11 SNMP集成
2.10.12 SQL Server Books Online
2.11 客户开发接口
2.11.1 ODBC
2.11.2 OLE DB
2.11.3 ADO
2.11.4 DB-Library
2.11.5 ESQL/C
2.11.6 服务器开发接口
2.12 总结
第二部分 基本结构概述
第三章 SQL Server的基本结构
3.1 SQL Server引擎
3.1.1 Net-Library
3.1.2 开放式数据服务
3.1.3 关系引擎和存储引擎
3.1.4 访问方法管理器
3.1.5 行操作管理器和索引管理器
3.1.6 页面管理器和文本管理器
3.1.7 事务管理器
3.1.8 锁管理器
3.1.9 其他管理器
3.2 管理内存
3.2.1 缓冲区管理器和内存池
3.2.2 访问内存内页面
3.2.3 访问自由页(惰性编写器)
3.2.4 检查点
3.2.5 使用缓冲区管理器访问页面
3.2.6 大量内存问题
3.2.7 日志管理器
3.3 事务的记录和恢复
3.3.1 锁定和恢复
3.3.2 页面LSN和恢复
3.4 SQL Server内核和与操作系统的交互
3.4.1 线程化和对称多处理技术
3.4.2 辅助线程池
3.4.3 Windows NT/2000中的磁盘I/O
3.5 总结
第三部分 使用Microsoft SQL Server
第四章 规划和安装SQL Server
4.1 SQL Server的版本
4.1.1 嵌入的SQL Server
4.2 硬件指导原则
4.2.1 使用“Windows硬件兼容列表”中的硬件
4.2.2 性能=Fn(处理器周期,内存,I/O传输量)
4.2.3 在基准程序上的投资
4.3 硬件组件
4.3.1 处理器
4.3.2 内存
4.3.3 磁盘驱动器、控制器和磁盘阵列
4.3.4 RAID解决方案
4.3.5 有关驱动器和控制器的更多信息
4.3.6 不间断电源(UPS)
4.3.7 磁盘子系统
4.3.8 后备服务器的能力
4.3.9 其他硬件的考虑因素
4.4 操作系统
4.5 文件系统
4.6 安全性和用户环境
4.7 许可
4.7.1 SQL Server的Processor License
4.7.2 Server License和CAL
4.7.3 多元化:中间件、事务服务器和多层结构的使用
4.7.4 多实例
4.8 网络协议
4.9 排序规则
4.9.1 字符集
4.9.2 排序顺序
4.10 多个实例
4.10.1 安装命名实例
4.10.2 命名实例的服务器连接
4.11 安装SQL Server
4.11.1 从以前的版本进行升级安装
4.12 安装后的基本配置
4.12.1 启动SQL Server服务
4.12.2 更改系统管理员的密码
4.12.3 配置SQL Server的错误日志
4.12.4 使用多实例
4.13 远程安装和无人参与安装
4.13.1 远程安装
4.13.2 无人参与安装
4.13.3 更改安装选项
4.13.4 添加其他组件
4.14 总结
第五章 数据库数据库文件
5.1 特殊的系统数据库
5.1.1 master
5.1.2 model
5.1.3 tempdb
5.1.4 pubs
5.1.5 Northwind
5.1.6 msdb
5.2 数据库文件
5.3 创建数据库
5.3.1 CREATE DATABASE示例
5.4 扩大和收缩数据库
5.4.1 自动的文件扩大
5.4.2 人工的文件扩大
5.4.3 自动的文件收缩
5.4.4 人工的文件收缩
5.5 日志大小方面的变化
5.5.1 日志截断
5.6 使用数据库文件组
5.6.1 默认文件组
5.6.2 FILEGROUP CREATION示例
5.7 修改数据库
5.7.1 ALTER DATABASE示例
5.8 数据库内幕
5.8.1 空间分配
5.9 设置数据库选项
5.9.1 状态选项
5.9.2 游标选项
5.9.3 自动选项
5.9.4 SQL选项
5.9.5 恢复选项
5.10 数据库的其他考虑因素
5.10.1 数据库与方案
5.10.2 使用可移动媒介
5.10.3 分离和重新附加数据库
5.10.4 兼容性级别
5.11 备份和恢复数据库
5.11.1 备份的类型
5.11.2 恢复模式
5.11.3 选择备份类型
5.11.4 恢复数据库
5.12 总结
第六章 表
6.1 创建表
6.1.1 命名表和列
6.1.2 预留的关键字
6.1.3 分隔标识符
6.1.4 命名约定
6.1.5 数据类型
6.1.6 关于NULL的更多内容
6.2 用户定义的数据类型
6.3 IDENTITY属性
6.4 内部存储
6.4.1 数据页
6.4.2 介绍数据页
6.4.3 数据行的结构
6.4.4 列偏移量数组
6.4.5 固定长度和可变长度行的存储
6.4.6 页面链接
6.4.7 文本和图像数据
6.4.8 sql_variant数据类型
6.5 约束
6.5.1 PRIMARY KEY和UNIQUE约束
6.5.2 FOREIGN KEY约束
6.5.3 约束检查的解决方法
6.5.4 对删除表的限制
6.5.5 自引用表
6.5.6 CHECK约束
6.5.7 默认约束
6.5.8 有关约束的更多内容
6.6 修改表
6.6.1 更改数据类型
6.6.2 添加新列
6.6.3 添加、删除、禁用或启用约束
6.6.4 删除列
6.6.5 启用或禁用触发器
6.7 临时表
6.7.1 私有临时表(#)
6.7.2 全局临时表(##)
6.7.3 直接使用tempdb
6.7.4 临时表中的约束
6.8 系统表
6.9 总结
第七章 查询数据
7.1 SELECT语句
7.2 联接
7.2.1 外部联接
7.2.2 旧式的*=OUTER JOIN操作符
7.2.3 交叉联接
7.3 处理NULL
7.3.1 现实生活中的NULL
7.3.2 IS NULL和=NULL
7.4 子查询
7.4.1 相关子查询
7.5 视图和派生表
7.5.1 修改视图
7.5.2 分区视图
7.6 其他搜索表达式
7.6.1 LIKE
7.6.2 BETWEEN
7.6.3 聚合函数
7.6.4 数据立方——聚合的变化形式
7.6.5 TOP
7.6.6 UNION
7.7 总结
第八章 索引
8.1 索引结构
8.1.1 群集索引
8.1.2 非群集索引
8.2 创建索引
8.2.1 约束和索引
8.3 索引页的结构
8.3.1 具有唯一标识符的群集索引行
8.3.2 索引行的格式
8.4 索引空间的需求
8.4.1 B树的大小
8.4.2 实际大小和估计大小
8.5 管理索引
8.5.1 碎片类型
8.5.2 检测碎片
8.5.3 删除碎片
8.6 特殊索引
8.6.1 前提条件
8.6.2 对计算得到的列的索引
8.6.3 索引视图
8.7 使用索引
8.7.1 查找行
8.7.2 联接
8.7.3 排序
8.7.4 分组
8.7.5 保持唯一性
8.8 总结
第九章 修改数据
9.1 基本的修改操作
9.1.1 INSERT
9.1.2 UPDATE
9.1.3 DELETE
9.1.4 通过视图修改数据
9.2 数据修改内幕
9.2.1 插入行
9.2.2 拆分页面
9.2.3 删除行
9.2.4 更新行
9.2.5 表级数据修改和索引级数据修改
9.2.6 记录
9.2.7 锁定
9.3 总结
第十章 使用Transact-SQL编程
10.1 作为编程语言的Transact-SQL
10.1.1 多级编程
10.2 Transact-SQL编程结构
10.2.1 变量
10.2.2 控制流工具
10.2.3 CASE
10.2.4 PRINT
10.2.5 RAISERROR
10.2.6 FORMATMESSAGE
10.2.7 运算符
10.2.8 标量函数
10.2.9 表值函数
10.3 Transact-SQL示例和难题
10.3.1 生成测试数据
10.3.2 获取等级
10.3.3 查找间隔之间的差别
10.3.4 代替重申的选择
10.4 全文搜索
10.4.1 全文索引
10.4.2 设置全文索引
10.4.3 维护全文索引
10.4.4 查询全文索引
10.4.5 全文索引的性能考虑因素
10.5 总结
第十一章 批处理文件、存储过程和函数
11.1 批处理文件
11.2 例程
11.3 存储过程
11.3.1 嵌套的存储过程
11.3.2 存储过程中的递归
11.3.3 存储过程的参数
11.4 用户定义的函数
11.4.1 表变量
11.4.2 标量值函数
11.4.3 表值函数
11.4.4 系统表值函数
11.4.5 管理用户定义的函数
11.5 将存储过程改写为函数
11.6 滚动您自己的系统例程
11.6.1 您自己的系统过程
11.6.2 您自己的系统函数
11.7 执行批处理文件或存储过程(和函数)
11.7.1 步骤1:解析命令并创建序列树
11.7.2 步骤2:编译批处理文件
11.7.3 步骤3:执行
11.7.4 步骤4:重新编译执行计划
11.7.5 例程的存储
11.7.6 加密例程
11.7.7 修改例程
11.8 临时存储过程
11.8.1 私有临时存储过程
11.8.2 全局临时存储过程
11.8.3 通过直接使用tempdb创建的过程
11.9 自动启动存储过程
11.10 系统存储过程
11.10.1 常规系统过程
11.10.2 编目存储过程
11.10.3 SQL Server Agent存储过程
11.10.4 复制存储过程
11.10.5 扩展存储过程
11.11 EXECUTE(“ANY STRING”)
11.12 总结
第十二章 事务和触发器
12.1 事务
12.1.1 明确事务和隐含事务
12.1.2 事务中的错误检查
12.1.3 事务的孤立级别
12.1.4 事务的其他特性
12.1.5 嵌套的事务块
12.1.6 保存点
12.2 触发器
12.2.1 后触发器
12.2.2 替代触发器
12.2.3 管理触发器
12.2.4 使用触发器执行引用动作
12.2.5 递归触发器
12.3 总结
第十三章 特殊的Transact-SQL操作:使用游标和大对象
13.1 游标的基础知识
13.2 游标和ISAM
13.2.1 使用ISAM类型的应用程序的问题
13.3 游标模型
13.3.1 Transact-SQL游标
13.3.2 API服务器游标
13.3.3 客户游标
13.3.4 默认结果集
13.3.5 API服务器游标和Transact-SQL游标
13.4 游标的适当使用
13.4.1 逐行操作
13.4.2 查询操作
13.4.3 滚动应用程序
13.4.4 选择游标
13.4.5 游标成员、滚动和更改敏感度
13.5 使用Transact-SQL游标
13.5.1 DECLARE
13.5.2 OPEN
13.5.3 FETCH
13.5.4 UPDATE
13.5.5 DELETE
13.5.6 CLOSE
13.5.7 DEALLOCATE
13.5.8 最简单的游标语法
13.5.9 完全可滚动的Transact-SQL游标
13.5.10 使用Transact-SQL游标进行并行性控制
13.6 游标变量
13.6.1 获得游标信息
13.7 使用文本和图像数据
13.7.1 WRITETEXT
13.7.2 READTEXT
13.7.3 UPDATETEXT
13.8 总结
第四部分 性能和调整
第十四章 锁定
14.1 锁管理器
14.1.1 镇管理器和孤立级别
14.1.2 原子锁
14.1.3 死锁
14.2 用户数据的锁类型
14.2.1 锁的类型
14.2.2 锁的粒度
14 2.3 锁的持续时间
14.2.4 锁的拥有关系
14.2.5 查看锁
14.3 锁的兼容性
14.4 锁定的内部结构
14.4.1 锁块
14.4.2 锁拥有者块
14.4.3 syslockinfo表
14.5 绑定连接
14.6 行级锁定和页面级锁定
14.6.1 锁的提升
14.7 锁定暗示和跟踪标记
14.8 总结
第十五章 查询处理器
15.1 SQL管理器
15.2 编译和优化
15.2.1 编译
15.2.2 优化
15.2.3 查询优化器的工作方式
15.2.4 联接选择
15.2.5 其他处理策略
15.2.6 维护统计信息
15.3 过程缓存
15.4 使用存储过程和缓存机制
15.4.1 特殊缓存
15.4.2 自动参数化
15.4.3 sp_executesql过程
15.4.4 准备和执行方法
15.4.5 共享缓存计划
15.4.6 检查计划缓存
15.4.7 缓存中的多个计划
15.4.8 使用存储过程和其他缓存机制的时间
15.4.9 重新编译存储过程
15.4.10 存储过程的其他好处
15.5 执行
15.6 总结
第十六章 调整查询
16.1 开发小组
16.2 应用程序和数据库设计
16.2.1 规范化数据库
16.2.1 评估重要事务
16.2.3 精简表行的长度和键
16.3 计划高峰使用
16.4 交互式系统的感知响应时间
16.5 原型、基准程序和测试
16.5.1 开发方法学
16.6 创建有用的索引
16.6.1 谨慎选择群集索引
16.6.2 使非群集索引具有较高的选择性
16.6.3 裁剪对重要事务的索引
16.6.4 注意列的顺序
16.6.5 联接中使用的索引列
16.6.6 根据需要创建或删除索引
16.6.7 Index Tuning Wizard
16.7 监视查询的性能
16.7.1 STATISTICS IO
16.7.2 STATISTICS TIME
16.7.3 计划显示
16.7.4 使用查询暗示
16.7.5 存储过程的优化
16.8 并行性和一致性的权衡
16.9 解决阻塞的问题
16.9.1 索引和阻塞
16.10 解决死锁问题
16.10.1 循环死锁示例
16.10.2 转换死锁示例
16.10.3 防止死锁
16.10.4 处理死锁
16.10.5 自愿作为死锁的牺牲者
16.10.6 观察锁定活动
16.10.7 标识阻塞的原因
16.10.8 锁暗示
16.11 隔离OLTP和DSS应用程序
16.12 环境因素
16.12.1 区分大小写
16.12.2 可控性和ANSI兼容设置
16.12.3 区域特定的SET选项
16.13 总结
第十七章 配置和性能监视
17.1 操作系统的配置设置
17.1.1 任务管理
17.1.2 资源分配
17.1.3 PAGEFILE.SYS的位置
17.1.4 文件系统选择
17.1.5 不重要的服务
17.1.6 网络协议
17.2 SQL Server的配置设置
17.2.1 服务器范围的选项
17.2.2 缓冲区管理器选项
17.2.3 SQLSERVER.EXE的启动参数
17.3 系统维护
17.4 监视系统行为
17.4.1 SQL Profiler
17.4.2 System Monitor
17.4.3 其他性能监视因素
17.5 总结
参考书目
[此贴子已经被作者于2010-12-11 19:36:49编辑过]