Legend:
Items in Green are new in SQL
Server 2012实施与管理实战指南 (新版), but not in Microsoft SQL Server企业级平台管理实践(老版).
Item in Red was in Microsoft SQL
Server企业级平台管理实践(老版), but not in SQL Server
2012实施与管理实战指南(新版)
Items in
the green background are in both editions, but revised.
具体差异:
新版
|
老版
|
第1部分 数据库系统的选型和部署
|
|
第1章 SQL Server的安装和升级 2
|
|
1.1 数据库安装过程介绍 3
|
|
1.1.1 setup.exe执行过程 3
|
|
1.1.2 重要的数据库的安装日志文件 5
|
|
1.2 单机版本的数据库安装和打补丁 13
|
|
1.2.1 安装注意事项 13
|
|
1.2.2 用SlipStream方式进行安装 14
|
|
1.2.3 用Product
Update方式进行安装 15
|
|
1.2.4 常见安装问题 16
|
|
1.3 特殊版本的数据库安装 18
|
|
1.4 群集环境下数据库的安装和升级 20
|
|
1.5 数据库的升级 27
|
|
1.6 小结 30
|
|
第2章 选择必要的高可用性和灾难恢复技术 31
|
|
2.1 什么是SQL
Server的“高可用性”与“灾难恢复” 31
|
|
2.2 SQL Server故障转移群集 33
|
|
2.2.1 Windows故障转移群集 33
|
|
2.2.2 SQL Server故障转移群集 36
|
|
2.2.3 SQL Server群集什么时候会发生“故障转移” 40
|
|
2.2.4 SQL Server群集的拓扑结构 43
|
|
2.2.5 SQL 2012对故障转移群集的改进 44
|
|
2.2.6 故障转移群集的故障排查 55
|
|
2.3 日志传送 58
|
|
2.3.1 日志传送的结构 59
|
|
2.3.2 日志传送的工作机制 60
|
|
2.3.3 日志传送作业的执行间隔 64
|
|
2.3.4 日志传送的故障转移 65
|
|
2.3.5 日志传送的监控和故障排查 68
|
|
2.4 数据库镜像 71
|
|
2.4.1 数据库镜像的基本概念 71
|
|
2.4.2 数据库镜像操作模式 74
|
|
2.4.3 客户端连接重定向及超时控制 78
|
|
2.4.4 数据库镜像的监控和故障排查 81
|
|
2.5 复制 84
|
|
2.5.1 复制的基本概念 84
|
|
2.5.2 复制的类型 86
|
|
2.5.3 灾难恢复和复制 90
|
|
2.6 高可用和灾难恢复技术的选择 91
|
|
2.6.1 高可用和灾难恢复技术的比较 91
|
|
2.6.2 高可用和灾难恢复技术的组合 97
|
|
2.7 小结 100
|
|
第3章 新一代的高可用技术AlwaysOn 101
|
|
3.1 AlwaysOn的基本架构 102
|
|
3.2 AlwaysOn的数据同步原理 106
|
|
3.3 AlwaysOn的可用性模式 107
|
|
3.4 AlwaysOn的故障转移形式 111
|
|
3.5 创建一个AlwaysOn可用性组 118
|
|
3.6 可读的辅助数据库 127
|
|
3.7 监视AlwaysOn可用性组的运行状态 133
|
|
3.8 小结 138
|
|
第4章 数据库连接组件编程机理 140
|
|
4.1 数据库应用编程方法概述和组件架构 141
|
|
4.1.1 WDAC编程 141
|
|
4.1.2 SNAC编程 162
|
|
4.1.3 ADO.NET编程 163
|
|
4.2 连接字符串 166
|
|
4.3 连接池 169
|
|
4.4 Connection Timeout和Command Timeout 173
|
|
4.5 使用BID
Tracing来跟踪检查应用程序的执行 181
|
|
4.6 小结 185
|
|
第2部分 SQL Server日常管理
|
|
第5章 启动SQL Server服务和数据库 188
|
第3章 SQL Server服务或数据库不可访问
|
5.1 SQL Server服务启动步骤 189
|
3.1 SQL Server服务启动顺序
|
5.1.1 从注册表读取SQL
Server启动信息 190
|
3.1.1 从注册表读取SQL
Server启动信息
|
5.1.2 检测硬件,配置内存与CPU 193
|
3.1.2 检测硬件,配置内存与CPU
|
3.1.3 初始化MS DTC
|
|
5.1.3 数据库启动 195
|
3.1.4 系统数据库启动
|
3.1.6 系统msdb数据库和其它用户数据库
|
|
5.1.4 准备网络连接 195
|
3.1.5 准备网络连接
|
5.2 数据库状态切换 198
|
3.2 数据库状态切换及Recovery
|
5.3 数据库长时间处于RECOVERING状态 201
|
|
5.4 数据库不能启动的常见原因和解决办法 206
|
3.3 系统数据库不能启动的常见原因和解决方法
|
5.4.1 master数据库不能启动 206
|
3.3.1 master数据库不能启动
|
5.4.2 资源数据库 208
|
3.3.2 资源数据库
|
5.4.3 model数据库 210
|
3.3.3 model数据库
|
5.4.4 tempdb数据库 212
|
3.3.4 tempdb数据库
|
5.4.5 用户数据库 214
|
3.4 用户数据库常见问题和解决方法
|
5.5 群集环境下,数据库资源不能ONLINE的常见原因 220
|
3.5 实例:修复Recovery失败的数据库
|
5.5.1 由于单机原因导致数据库服务无法启动 222
|
|
5.5.2 由于SQL
Server所依赖的资源失败所导致 223
|
|
5.5.3 由于群集服务无法连接导致数据库资源失败 224
|
|
5.6 小结 228
|
|
第6章 连接的建立和问题排查 229
|
第5章 连接与认证
|
6.1 协议的选择与别名 230
|
5.1 协议的选择与别名
|
6.1.1 服务器网络配置 231
|
5.1.1 服务器网络配置
|
6.1.2 SQL Server Browser的作用 233
|
5.1.2 SQL Server Browser的作用
|
6.1.3 客户端网络配置 235
|
5.1.3 客户端网络配置
|
6.1.4 客户端网络连接选择机制 239
|
5.1.4 客户端网络连接选择机制
|
6.2 连接失败检测步骤——命名管道 241
|
5.2 连接失败检测步骤——命名管道
|
6.2.1 SQL Server命名管道工作原理 242
|
|
6.2.2 客户端的命名管道配置 243
|
|
6.2.3 命名管道连接问题的解决步骤 245
|
|
6.2.4 一些常见的连接问题 246
|
|
6.3 连接失败检测步骤——TCP/IP 247
|
5.3 连接失败检测步骤——TCP/IP
|
6.3.1 SQL Server监听的TCP/IP端口号 248
|
|
6.3.2 客户端的TCP/IP协议配置 249
|
|
6.3.3 TCP/IP连接的keepalive机制 251
|
|
6.3.4 配置SQL
Server的keepalive配置 252
|
|
6.3.5 配置客户端的keepalive配置 253
|
|
6.3.6 TCP/IP连接问题的解决步骤 254
|
|
6.4 一般性网络错误 258
|
5.4 一般性网络错误(General
Network Error)
|
6.5 利用Ring
Buffer排查连接问题 266
|
|
6.6 小结 271
|
|
第7章 身份认证与连接加密 272
|
|
7.1 SQL Server的认证方式 273
|
5.5 认证与代理问题
|
7.1.1 SQL Server认证模式和密码管理 273
|
5.5.1 SQL Server认证模式和密码管理
|
7.1.2 Windows认证模式 274
|
5.5.2 Windows认证模式
|
7.1.3 常见认证问题 286
|
|
7.1.4 Delegation的配置要求 288
|
5.5.3
Delegation的配置要求
|
7.2 包含数据库认证 295
|
|
7.2.1 创建包含数据库 296
|
|
7.2.2 使用包含数据库认证 299
|
|
7.2.3 包含数据库认证的安全须知 303
|
|
7.3 连接加密和证书 305
|
|
7.3.1 SQL Server的连接加密 306
|
|
7.3.2 使用证书来加密SQL
Server连接 313
|
|
7.4 小结 319
|
|
第8章 数据库空间管理 320
|
第1章 数据库空间管理
|
大同小异
|
|
8.1 数据文件的空间使用和管理 321
|
|
8.1.1 数据文件存储结构 321
|
|
8.1.2 表存储结构 323
|
|
8.1.3 比较存储结构对空间使用的影响 332
|
|
8.2 日志文件的空间使用和管理 337
|
|
8.3 空间使用计算方法 341
|
|
8.4 tempdb的空间使用 346
|
|
8.5 数据文件的收缩 353
|
|
8.6 日志文件不停地增长 362
|
|
8.7 文件自动增长和自动收缩 367
|
|
8.8 小结 370
|
|
第9章 数据库备份与恢复 371
|
第2章 数据库备份与恢复
|
9.1 备份概述 372
|
2.1 备份概述
|
9.2 选择备份策略和恢复模式 375
|
2.2 选择备份策略和恢复模式
|
9.2.1 简单恢复模式下的备份 376
|
2.2.1 简单恢复模式下的备份
|
9.2.2 完整恢复模式下的备份 377
|
2.2.2 完整恢复模式下的备份
|
9.2.3 文件或文件组备份 381
|
2.2.3 文件或文件组备份
|
9.3 选择数据库还原方案 382
|
2.3 选择数据库还原方案
|
9.3.1 数据库完整还原 384
|
2.3.1 数据库完整还原
|
9.3.2 文件还原 386
|
2.3.2 文件还原
|
9.3.3 页面还原 387
|
2.3.3 页面还原
|
9.3.4 段落还原 390
|
2.3.4 段落还原
|
9.3.5 还原方案小结 393
|
2.3.5 还原方案小结
|
9.3.6 孤立用户故障排除 394
|
2.3.6 孤立用户故障排除
|
9.4 系统数据库备份与恢复 395
|
2.5 系统数据库备份与恢复
|
9.4.1 master数据库 396
|
2.5.1 master数据库
|
9.4.2 model数据库 397
|
2.5.2 model数据库
|
9.4.3 msdb数据库 397
|
2.5.3 msdb数据库
|
9.4.4 tempdb和资源数据库 398
|
2.5.4 tempdb和资源数据库
|
9.5 带有FILESTREAM功能的数据库备份和恢复 399
|
|
9.6 应对由于备份损坏导致的还原错误 401
|
2.4 应对由于备份损坏导致的还原错误
|
9.7 实例:将数据库系统在一台新服务器上恢复 403
|
2.6 实例:将数据库系统在一台新服务器上恢复
|
9.8 小结 408
|
|
第10章 数据库损坏修复 409
|
第4章 数据库损坏修复
|
10.1 常见错误解读 409
|
4.1 常见错误解读
|
10.1.1 823 409
|
4.1.1 823
|
10.1.2 824 410
|
4.1.2 824
|
10.1.3 605 412
|
4.1.1 605
|
10.1.4 其他 413
|
4.1.1 其他
|
10.2 DBCC CHECKDB 414
|
4.2 DBCC CHECKDB
|
10.2.1 DBCC CHECKDB在做什么 414
|
4.2.1 DBCC CHECKDB在做什么
|
10.2.2 DBCC CHECKDB提供的修复方法 418
|
4.2.2 DBCC CHECKDB提供的修复方法
|
10.2.3 如何在超大数据库上运行DBCC
CHECKDB 420
|
4.2.3 如何在超大数据库上运行DBCC
CHECKDB
|
10.3 不同部位损坏的应对 423
|
|
10.3.1 备份文件损坏 424
|
|
10.3.2 日志文件损坏 426
|
|
10.3.3 用户数据文件损坏 427
|
|
10.3.4 系统数据库损坏 431
|
|
10.4 如何从损坏的数据库导出数据 432
|
|
10.5 如何使用TableDiff工具发现哪些数据有丢失或改变 439
|
|
10.6 数据库反复损坏问题应对 440
|
4.3 数据库反复损坏问题应对
|
10.6.1 SQL I/O 管理操作方法 441
|
4.3.1 SQL I/O 管理操作方法
|
10.6.2 确保系统I/O正常 443
|
4.3.2 确保系统I/O正常
|
10.6.3 SQL层面能够做的设置 448
|
4.3.3 SQL层面能够做的设置
|
10.7 Database Mirroring和AlwaysOn的页面自动修复功能 449
|
4.3.4
Database Mirroring的页面自动修复功能
|
10.8 小结 452
|
|
第3部分 SQL Server资源调度与性能调优
|
|
第11章 SQL Server内存分配理念和常见内存问题 454
|
第6章 SQL Server内存分配理念和常见内存问题
|
11.1 从操作系统层面看SQL
Server内存分配 457
|
6.1 从操作系统层面看SQL Server内存分配
|
11.1.1 Windows的一些内存术语 457
|
6.1.1 Windows的一些内存术语
|
11.1.2 32位下Windows的地址空间及AWE 460
|
6.1.2 32位下Windows的地址空间及AWE
|
11.1.3 Windows层面上的内存使用检查 463
|
6.1.3 Windows层面上的内存使用检查
|
11.1.4 内存使用和其他系统资源的关系 468
|
6.1.4 内存使用和其他系统资源的关系
|
11.1.5 SQL内存使用和Windows之间的关系 470
|
6.1.5 SQL内存使用和Windows之间的关系
|
11.1.6 SQL内存使用量陡然下降现象 472
|
6.1.6 SQL内存使用量陡然下降现象
|
11.1.7 案例分析 474
|
6.1.7 案例分析
|
11.1.8 如何“合理”配置SQL
Server内存 476
|
6.1.8 如何“合理”配置SQL
Server内存
|
11.2 SQL Server内部独特的内存管理模式 477
|
6.2 SQL Server内部独特的内存管理模式
|
11.2.1 内存使用分类 478
|
6.2.1 内存使用分类
|
11.2.2 32位下各部分内存的分布和大小限制 482
|
6.2.2 各部分内存的分布和大小限制
|
11.2.3 SQL Server在不同服务器配置下各部分内存的最高使用上限 484
|
|
11.2.4 一些内存使用错误理解 485
|
6.2.3 一些内存使用错误理解 485
|
11.3 SQL Server内存使用状况分析方法 487
|
6.3 SQL Server内存使用状况分析方法
|
11.3.1 SQL性能计数器 488
|
6.3.1 SQL性能计数器 488
|
11.3.2 内存动态管理视图(DMV) 490
|
6.3.2 内存动态管理视图(DMV)
|
11.4 数据页缓冲区压力分析 497
|
6.4 数据页缓冲区压力分析
|
11.4.1 表现特征 497
|
6.4.1 表现特征
|
11.4.2 确定压力来源和解决办法 500
|
6.4.2 确定压力来源和解决办法
|
11.4.3 如何发现内存使用比较多的语句
|
6.4.3 如何发现内存使用比较多的语句
|
11.5 Stolen Memory缓存压力分析 508
|
6.5 Stolen Memory缓存压力分析
|
11.5.1 Stolen缓存区与数据页缓存区的相互关系 509
|
6.5.1 Stolen缓存区与数据页缓存区的相互关系
|
11.5.2 内部压力与外部压力 510
|
6.5.2 内部压力与外部压力
|
11.5.3 表现特征与解决办法 510
|
6.5.3 表现特征与解决办法
|
11.6 Multi-page缓存区压力分析 512
|
6.6 Multi-page缓存区压力分析
|
11.7 常见内存错误与解决办法 515
|
6.7 常见内存错误与解决办法
|
11.7.1 错误701 516
|
6.7.1 错误701
|
11.7.2 错误8645 520
|
6.7.2 错误8645
|
11.7.3 SQL Server无法创建新的线程 524
|
6.7.3 SQL Server无法创建新的线程
|
11.8 SQL Server 2012 内存管理的新变化 525
|
|
11.8.1 总体变化 527
|
|
11.8.2 AWE和LockedPages的变化 528
|
|
11.8.3 内存相关的诊断工具的变化 530
|
|
11.8.4 SQL Server 2012内存相关配置的变化 533
|
|
11.8.5 其他改变 535
|
|
11.9 小结 535
|
6.8 小结
|
第12章 SQL Server I/O问题 537
|
第7章 SQL Server IO问题
|
12.1 SQL Server的I/O操作 537
|
7.1 SQL Server的I/O操作
|
12.2 系统级I/O问题判断 544
|
7.2 系统级I/O问题判断
|
12.3 数据库引擎错误833 548
|
7.3 数据库引擎错误833
|
12.4 I/O问题的SQL
Server内部分析 550
|
7.4 IO问题的SQL Server内部分析
|
12.5 硬盘压力测试 558
|
7.5 硬盘压力测试
|
12.6 圣剑——Windows提供的新的底层监测功能 564
|
|
12.7 小结 570
|
7.6 小结
|
第13章 任务调度与CPU问题 572
|
第8章 任务调度与CPU问题
|
13.1 SQL Server独特的任务调度算法 573
|
8.1 SQL Server独特的任务调度算法(SQLOS)
|
13.1.1 SQLOS的任务调度算法 575
|
8.1.1 SQLOS的任务调度算法
|
13.1.2 任务调度健康监测及常见问题 580
|
8.1.2 任务调度健康监测及常见问题
|
13.1.3 一个内存转储文件的分析调试过程 583
|
|
13.1.4 案例分析 588
|
8.1.4 案例分析
|
13.2 SQL Server CPU 100%问题 592
|
8.2 SQL CPU %问题
|
13.3 OLTP和Data
Warehouse系统差别及常用性能阈值 597
|
8.3 OLTP和Data
Warehouse系统差别及常用性能阀值
|
13.3.1 OLTP系统 597
|
8.3.1 OLTP系统
|
13.3.2 Data Warehouse系统 604
|
8.3.2 Data Warehouse系统
|
13.4 小结 609
|
8.4 小结
|
第14章 阻塞与死锁——知识准备 611
|
第9章 阻塞与死锁——知识准备
|
14.1 锁产生的背景 612
|
9.1 锁产生的背景
|
14.2 锁资源模式和兼容性 614
|
9.2 锁资源模式和兼容性
|
14.3 事务隔离级别与锁的申请和释放 618
|
9.3 事务隔离级别与锁的申请和释放
|
14.4 如何监视锁的申请、持有和释放 628
|
9.4 如何监视锁的申请、持有和释放
|
14.4.1 检查一个连接当前锁持有的锁 628
|
9.4.1 检查一个连接当前锁持有的锁
|
14.4.2 监视语句执行过程中SQL对锁的申请和释放行为 629
|
9.4.2 监视语句执行过程中SQL对锁的申请和释放行为
|
14.5 锁的数量和数据库调优的关系 630
|
9.5 锁的数量和数据库调优的关系
|
14.5.1 一个常见的SELECT动作要申请的锁 634
|
9.5.1 一个常见的SELECT动作要申请的锁
|
14.5.2 一个常见的UPDATE动作要申请的锁 639
|
9.5.2 一个常见的UPDATE动作要申请的锁
|
14.5.3 一个常见的DELETE动作要申请的锁 641
|
9.5.3 一个常见的DELETE动作要申请的锁
|
14.5.4 一个常见的INSERT动作要申请的锁 643
|
9.5.4 一个常见的INSERT动作要申请的锁
|
14.6 小结 645
|
9.6 结论
|
9.7 数据库引擎中基于行版本控制的隔离级别
|
|
第15章 阻塞与死锁——问题定位与解决 646
|
第10章 阻塞与死锁——问题定位与解决
|
15.1 阻塞问题定位方法及实例演示 647
|
10.1 阻塞问题定位方法及实例演示
|
15.2 如何捕捉不定时出现的阻塞信息 655
|
|
15.3 常见阻塞原因与解决方法 658
|
10.2 常见阻塞原因与解决方法
|
15.4 案例分析:连接池与阻塞 666
|
10.3 案例分析:连接池(Connection
Pooling)与阻塞
|
15.4.1 连接池与SQL
Server 666
|
10.3.1 连接池与SQL
Server
|
15.4.2 正常情况下连接池在SQL
Server端的处理方式 667
|
10.3.2 正常情况下连接池在SQL
Server端的处理方式
|
15.4.3 程序端意外情况下SQL
Server端可能导致的问题——应用端超时 671
|
10.3.3 程序端意外情况下SQL
Server端可能导致的问题——应用端超时
|
15.4.4 程序端意外情况下SQL
Server端可能导致的问题——应用层事物未提交 675
|
10.3.4 程序端意外情况下SQL
Server端可能导致的问题——应用层事物未提交
|
15.5 死锁问题定位及解决方法 680
|
10.4 死锁问题定位及解决方法
|
15.5.1 死锁所在的资源和检测 680
|
10.4.1 死锁所在的资源和检测
|
15.5.2 问题定位 682
|
10.4.2 问题定位
|
15.5.3 解决办法 686
|
10.4.3 解决办法
|
15.5.4 动手实验 687
(名称不同而已,内容基本一样)
|
10.4.4 案例分析
|
15.6 小结 698
|
|
第16章 从等待状态判断系统资源瓶颈 699
|
第11章 从等待状态判断系统资源瓶颈
|
16.1 LCK_xx类型 701
|
11.1 LCK_xx类型
|
16.2 PAGEIOLATCH_x与WRITELOG 702
|
11.2 PAGEIOLATCH_x 与WRITELOG
|
16.3 PAGELATCH_x 704
|
11.3 PAGELATCH_x
|
16.4 tempdb上的PAGELATCH 708
|
11.4 Tempdb上的PAGELATCH
|
16.5 其他资源等待 710
|
11.5 其他资源等待
|
16.6 最后一道瓶颈:许多任务处于RUNNABLE状态 713
|
11.6 最后一道瓶颈:许多任务处于Runnable状态
|
16.7 小结 715
|
11.7 小结
|
第17章 语句调优——知识准备 719
|
第12章 语句调优——知识准备
|
17.1 索引与统计信息 723
|
12.1 索引与统计信息
|
17.1.1 索引上的数据检索方法 723
|
12.1.1 索引上的数据检索方法
|
17.1.2 统计信息的含义与作用 727
|
12.1.2 统计信息的含义与作用
|
17.1.3 统计信息的维护和更新 732
|
12.1.3 统计信息的维护和更新
|
17.2 编译与重编译 736
|
12.2 编译与重编译
|
17.3 读懂执行计划 750
|
12.3 读懂执行计划
|
17.3.1 连接 754
|
12.3.1 联接(Join)
|
17.3.2 其他常见的运算操作 762
|
12.3.2 其他常见的运算操作
|
17.4 读懂语句运行统计信息 765
|
12.4 读懂语句运行统计信息
|
17.4.1 Set statistics time on 766
|
12.4.1 Set statistics time on
|
17.4.2 Set statistics io on 768
|
12.4.2 Set statistics io on
|
17.4.3 Set statistics profile
on 770
|
12.4.3 Set statistics profile on
|
17.5 小结 775
|
|
第18章 语句调优——问题定位与解决方法 776
|
第13章 语句调优-问题定位与解决方法
|
18.1 是否是因为做了物理I/O而导致的性能不佳 777
|
13.1 是否是因为做了物理IO而导致的性能不佳
|
18.2 是否是因为编译时间长而导致性能不佳 780
|
13.2 是否是因为编译时间长而导致性能不佳
|
18.3 判断执行计划是否合适 784
|
13.3 判断执行计划是否合适
|
18.3.1 预估cost的准确性 784
|
13.3.1 预估cost的准确性
|
18.3.2 是Index
Seek还是Table Scan 790
|
13.3.2 是Index
Seek还是Table Scan
|
18.3.3 是Nested
Loops还是Hash (Merge) Join 794
|
13.3.3 是Nested
Loops还是Hash (Merge) Join
|
18.3.4 filter运算的位置 795
|
13.3.4 filter运算的位置
|
18.3.5 确认问题产生的原因 798
|
13.3.5 确认问题产生的原因
|
18.4 Parameter Sniffing 800
|
13.4 Parameter Sniffing
|
18.4.1 什么是“Parameter
Sniffing” 801
|
13.4.1 什么是“Parameter
Sniffing”
|
18.4.2 本地变量的影响 802
|
13.4.2 本地变量的影响
|
18.4.3 Parameter Sniffing的解决方案 804
|
13.4.3 Parameter Sniffing的解决方案
|
18.5 调整数据库设计来优化语句性能 814
|
13.5 调整数据库设计来优化语句性能
|
18.5.1 调整索引 814
|
13.5.1 调整索引
|
18.5.2 计划指南 821
|
13.5.2 计划指南
|
18.6 调整语句设计提高性能 829
|
13.6 调整语句设计提高性能
|
18.6.1 筛选条件与计算字段 829
|
13.6.1 筛选条件与计算字段
|
18.6.2 会在运行前改变值的变量 832
|
13.6.2 会在运行前改变值的变量
|
18.6.3 临时表和表变量 834
|
13.6.3 临时表和表变量
|
18.6.4 尽可能限定语句的复杂度 836
|
13.6.4 尽可能限定语句的复杂度
|
18.7 小结 838
|
|
第4部分 SQL Server常用日志信息与推荐搜集方法
|
|
第19章 SQL Server常用日志信息与推荐搜集方法 840
|
第14章 常用SQL Server系统信息与搜集方法
|
19.1 Windows事件日志 841
|
14.1 Windows 事件日志(Event
Log)
|
19.2 SQL Server errorlog文件 843
|
14.2 SQL Server Errorlog文件
|
19.3 性能监视器 845
|
14.3 性能监视器(Performance
Monitor)
|
19.4 SQL Trace文件 851
|
14.4 SQL Trace文件
|
19.4.1 SQL Trace文件的收集方法 851
|
14.4.1 SQL Trace文件的收集方法
|
19.4.2 SQL Trace文件的分析方法 860
|
14.4.2 SQL Trace文件的分析方法
|
19.4.3 自动化分析SQL
Trace 862
|
14.4.3 自动化分析SQL
Trace
|
19.5 系统管理视图跟踪 866
|
14.5 系统管理视图跟踪
|
19.6 SQLDIAG工具 868
|
14.6 自动化信息收集:SQLDiag工具
|
19.7 强烈推荐:PSSDIAG工具 873
|
|
19.7.1 使用PSSDIAG收集信息 874
|
|
19.7.2 自动化分析PSSDIAG收集的信息 876
|
|
19.8 系统自动监视工具——Performance
Dashboard 879
|
14.7 系统自动监视工具 -
Performance Dashboard
|
19.9 小结 882
|
具体差异:
除新版增加了第1 - 4章外,新版和老版还有如下的差异:
1.
P. 189
(1)
添加5. 群集环境下SQL Server资源无法保持正常在线
(2)
添加the last bullet (在群集环境下启动,上线或切换)
2.
PP. 191-192 (检查无法启动SQL Server时,除了原先的Windows System Log和Application
Event Log, 又加了Process
Monitor)
(1)
191页最后一段(当User没权限去读注册表时),老版用Windows System
Log查错,新版是用Process
Monitor,然后用Access
Denied过滤。
(2)
192页最后,加了运行NET HELPMSG 3去进一步了解Operating System Error 3的含义。
3.
P.194 – Error Log 的内容除了老版的,还
(1)
添加了NUMA(Non-uniform memory access)和Dynamic Lock Allocation的信息
(2)
添加了CLR版本等信息
4.
PP. 201 – 205
(1)
对Recovering State有扩展,增加了一个案例。
5.
PP. 220-226
(1)
添加 5.5 - 群集环境下,数据库资源不能ONLINE的常见原因 220
6.
老版3.1.3 初始化MS DTC被删除(pp. 76-77)
7.
老版3.5 实例:修复Recovery失败的数据库 (pp.95 -98)
8.
老版第5章的连接与认证 ,在新版中分成了2章:第6章 - 连接和第7章 - 认证。内容有加强,特别在认证部分,增加了包含数据库认证和加密。
9.
新版第8章与老版第1章内容上大同小异,单在组织上有些调整。
10.
新版第九章增加了9.5节 - 带有FILESTREAM功能的数据库备份和恢复。
11.
新版第10章数据库损坏修复 增加了10.3
不同部位损坏的应对,10.4
如何从损坏的数据库导出数据,10.5
如何使用TableDiff工具发现哪些数据有丢失或改变,和10.7
中关于AlwaysOn的页面自动修复功能的那部分。
12.
新版第11章主要增加了11.8节 - SQL Server 2012 内存管理的新变化。
13.
新版第12章增加了12.6 圣剑——Windows提供的新的底层监测功能
14.
新版第13章增加了一节13.1.3 一个内存转储文件的分析调试过程
15.
新版第14章增加了不同事务隔离等级下,事务不同表现的例子。见pp.622
– 627中的表14-6,
14-7, 14-8, 14-9, and 14-10。
16.
老版的9.7 - 数据库引擎中基于行版本控制的隔离级别在新版中被插入到14.3(包括表14-9)。
17.
新版第15章增加了15.2 如何捕捉不定时出现的阻塞信息 和15.6
小结 。至于15.5.4 动手实验 与老版的10.4.4 案例分析只是名称不同而已,内容基本一样。
18.
新版第18章18.4.3 Parameter
Sniffing的解决方案增加了一个新的解决方法:4.
一个另类的解决方法(pp.812
– 814).
19.
新版第19章增加了19.7 强烈推荐:PSSDIAG工具。