《Microsoft SQL Server 2000技术内幕》PDF下载

  • 购买积分:25 如何计算积分?
  • 作  者:(美)Kalen Delaney著;莱恩工作室译
  • 出 版 社:北京:北京大学出版社
  • 出版年份:2002
  • ISBN:7301051298
  • 页数:960 页
图书介绍:本书内容包括SQLServer从1989年以来的历史,基础结构的概述,以及它的工具和特性的综合介绍,有关安装和部署问题的知识,如何创建、修改备份和恢复数据库、文件及表,以及如何查询和修改数据等。

目录 1

前言 1

第一部分概述 3

第一章Mlcrosoft SQL Server的演变过程:从1989年到2000年 3

1.1 SQLServer:初期阶段 4

1.2 Ron的故事 6

1.3 Kalen的故事 7

1.4 Microsoft SQLServer的发布 8

1.5开发角色的演变 9

1.6 OS/2和友好的攻击 11

1.7 SQLServer 4.2 13

1.7.1即将发布的OS/22.0 14

1.7.2 4.2版本的发布 14

1.8用于Windows NT的SQL Server 15

1.9成功带来的巨大变化 19

1.10合作开发的结束 20

1.11管理SQL95 22

1.12下一版本 25

1.13 Sphinx的秘密 25

1.14新世纪的软件 27

第二章 介绍SQL Server 31

7.3处理NULL 32

2.1.1 Transact-SQL 33

2.1 SQL Server引擎 33

2.2DBMS强制的数据完整性 37

2.2.1声明数据完整性 38

2.2.2数据类型 39

2.2.3 CHECK约束和规则 40

2.2.4默认值 40

2.2.5触发器 41

2.3事务处理 42

2.3.1 原子性 42

2.3.3孤立性 43

2.3.4持久性 43

2.3.2一致性 43

2.4对称服务器构架 44

2.4.1传统的进程/线程模式 44

2.4.2 SQLServer的进程/线程模式 45

2.4.3多用户性能 46

2.5安全性 46

2.5.1监视和管理安全性 47

2.6较高的可用性 48

2.7分布式数据处理 48

2.8数据复制 50

2.9.1 SQLServer Enterprise Manager 52

2.9系统管理 52

2.9.2 Distributed Management Objects 54

2.9.3 Windows Management Instrumentation 55

2.9.4 SQL-DMO和Visual Basic脚本 55

2.9.5 SQLServer Agent 56

2.10 SQLServer的实用程序和扩展 58

2.10.1 Web Assistant Wizard和Internet启用 58

2.10.2 SQLProfiler 59

2.10.4 System Monitor的集成 60

2.10.3 SQLServer Service Manager 60

2.10.5 Client Network实用程序 61

2.10.6 Server Network实用程序 62

2.10.7 SQLServer的安装 62

2.10.8 OSQL和ISQL 62

2.10.9 SQLQuery Analyzer 63

2.10.10大量复制和数据传输服务 63

2.10.11 SNMP集成 64

2.10.12 SQLServer Books Online 64

2.11.3 ADO 65

2.11.1 ODBC 65

2.11.2 OLE DB 65

2.11客户开发接口 65

2.11.4 DB-Library 66

2.11.5 ESQL/C 66

2.11.6服务器开发接口 66

2.12总结 67

第二部分基本结构概述 71

第三章SQL Server的基本结构 71

3.1 SQL Server引擎 71

3.1.1 Net-Library 71

3.1.2开放式数据服务 75

3.1.3关系引擎和存储引擎 79

3.1.4访问方法管理器 82

3.1.5行操作管理器和索引管理器 83

3.1.6页面管理器和文本管理器 87

3.1.7事务管理器 88

3.1.8锁管理器 91

3.1.9其他管理器 92

3.2管理内存 92

3.2.1缓冲区管理器和内存池 93

3.2.2访问内存内页面 93

3.2.3访问自由页(惰性编写器) 94

3.2.4检查点 96

3.2.5使用缓冲区管理器访问页面 98

3.2.6大量内存问题 99

3.2.7 日志管理器 102

3.3事务的记录和恢复 103

3.3.1锁定和恢复 105

3.3.2页面LSN和恢复 105

3.4 SQL Server内核和与操作系统的交互 107

3.4.1线程化和对称多处理技术 108

3.4.2辅助线程池 109

3.5总结 112

3.4.3 Windows NT/2000中的磁盘I/O 112

第三部分 使用Microsoft SQL Server 115

第四章 规划和安装SQL Server 115

4.1 SQL Server的版本 115

4.1.1嵌入的SQLServer 118

4.2.1使用“Windows硬件兼容列表”中的硬件 119

4.2.2性能=Fn(处理器周期,内存,I/O传输量) 119

4.2硬件指导原则 119

4.2.3在基准程序上的投资 120

4.3硬件组件 121

4.3.1处理器 122

4.3.2内存 123

4.3.3磁盘驱动器、控制器和磁盘阵列 124

4.3.4 RAID解决方案 126

4.3.5有关驱动器和控制器的更多信息 137

4.3.6不间断电源(UPS) 138

4.3.7磁盘子系统 139

4.3.8后备服务器的能力 140

4.3.9其他硬件的考虑因素 141

4.4操作系统 141

4.5文件系统 142

4.6安全性和用户环境 143

4.7许可 145

4.7.1 SQL Server的Processor License . 145

4.7.2 Server License和CAL 145

4.7.3多元化:中间件、事务服务器和多层结构的使用 146

4.7.4多实例 147

4.8网络协议 147

4.9排序规则 150

4.9.1字符集 151

4.9.2排序顺序 152

4.10多个实例 157

4.10.2命名实例的服务器连接 159

4.10.1安装命名实例 159

4.11安装SQL Server 160

4.11.1从以前的版本进行升级安装 161

4.12安装后的基本配置 162

4.12.1启动SQLServer服务 163

4.12.2更改系统管理员的密码 163

4.12.3配置SQLServer的错误日志 164

4.12.4使用多实例 165

4.13远程安装和无人参与安装 167

4.13.1远程安装 167

4.13.2无人参与安装 168

4.13.3更改安装选项 169

4.13.4添加其他组件 170

4.14总结 170

第五章数据库数据库文件 171

5.1.1 master 172

512 model 172

5.1特殊的系统数据库 172

5.1.3 tempdb 173

5.1.4 pubs 173

5.1.5 Northwind 174

5.1.6 madb 174

5.2数据库文件 174

5.3创建数据库 175

5.3.1 CREATE DATABASE示例 178

5.4扩大和收缩数据库 178

5.4.1 自动的文件扩大 178

5.4.3自动的文件收缩 179

5.4.4人工的文件收缩 179

5.4.2人工的文件扩大 179

5.5 日志大小方面的变化 181

5.5.1 日志截断 185

5.6使用数据库文件组 186

5.6.1默认文件组 186

5.6.2 FILEGROUP CREATION示例 188

5.7修改数据库 189

5.7.1 ALTER DATABASE示例 190

5.8数据库内幕 191

5.8.1空间分配 193

5.9设置数据库选项 196

5.9.1状态选项 197

5.9.2游标选项 201

5.9.3自动选项 201

5.9.4 SQL选项 202

5.9.5恢复选项 204

5.10.1数据库与方案 205

5.10数据库的其他考虑因素 205

5.10.2使用可移动媒介 206

5.10.3分离和重新附加数据库 207

5.10.4兼容性级别 208

5.11备份和恢复数据库 209

5.11.1备份的类型 209

5.11.2恢复模式 210

5.11.3选择备份类型 214

5.11.4恢复数据库 215

5.12总结 219

第六章表 221

6.1创建表 222

6.1.1命名表和列 223

6.1.3分隔标识符 224

6.1.2预留的关键字 224

6.1.4命名约定 225

6.1.5数据类型 226

6.1.6关于NULL的更多内容 235

6.2用户定义的数据类型 239

6.3 IDENTITY属性 241

6.4内部存储 244

6.4.1数据页 246

6.4.2介绍数据页 248

6.4.3数据行的结构 251

6.4.4列偏移量数组 253

6.4.5固定长度和可变长度行的存储 254

6.4.6页面链接 258

6.4.7文本和图像数据 260

6.4.8 sql_variant数据类型 265

6.5约束 269

6.5.1 PRIMARY KEY和UNIQUE约束 270

6.5.2 FOREIGN KEY约束 276

6.5.3约束检查的解决方法 284

6.5.4对删除表的限制 286

6.5.5自引用表 286

6.5.6 CHECK约束 288

6.5.7默认约束 292

6.5.8有关约束的更多内容 296

6.6修改表 304

6.6.1更改数据类型 304

6.6.2添加新列 305

6.6.3添加、删除、禁用或启用约束 305

6.6.4删除列 306

6.6.5启用或禁用触发器 307

6.7临时表 307

6.7.1私有临时表(#) 307

6.7.2全局临时表(##) 308

6.7.3直接使用tempdb 308

6.7.4临时表中的约束 309

6.8系统表 309

6.9总结 312

第七章查询数据 313

7.1 SELECT语句 313

7.2联接 315

7.2.1外部联接 319

7.2.2旧式的*=OUTER JOIN操作符 324

7.2.3交叉联接 331

7.3.1现实生活中的NULL 336

7.3.2 IS NULL和=NULL 338

7.4子查询 341

7.4.1相关子查询 346

7.5视图和派生表 353

7.5.1修改视图 357

7.5.2分区视图 358

7.6其他搜索表达式 360

7.6.1 LIKE 361

7.6.2 BETWEEN 366

7.6.3聚合函数 367

7.6.4数据立方——聚合的变化形式 373

7.6.5 TOP 387

7.6.6 UNION 390

7.7总结 395

第八章索引 397

8.1索引结构 398

8.1.1群集索引 399

8.1.2非群集索引 400

8.2创建索引 401

8.2.1约束和索引 403

8.3.1具有唯一标识符的群集索引行 405

8.3索引页的结构 405

8.3.2索引行的格式 409

8.4索引空间的需求 420

8.4.1 B树的大小 420

8.4.2实际大小和估计大小 421

8.5管理索引 423

8.5.1碎片类型 424

8.5.2检测碎片 424

8.5.3删除碎片 427

8.6特殊索引 429

8.6.1前提条件 429

8.6.2对计算得到的列的索引 433

8.6.3索引视图 434

8.7.2联接 437

8.7使用索引 437

8.7.1查找行 437

8.7.3排序 438

8.7.4 分组 439

8.7.5保持唯一性 439

8.8总结 439

第九章修改数据 441

9.1基本的修改操作 441

9.1.1 INSERT 441

9.1.2 UPDATE 453

9.1.3 DELETE 456

9.1.4通过视图修改数据 457

9.2数据修改内幕 466

9.2.1插入行 467

9.2.2拆分页面 467

9.2.3删除行 471

9.2.4更新行 478

9.2.5表级数据修改和索引级数据修改 485

9.2.6记录 486

9.2.7锁定 486

9.3总结 487

第十章 使用Transact-SQL编程 489

10.1 作为编程语言的Transact-SQL 490

10.1.1多级编程 490

10.2 Transact-SQL编程结构 493

10.2.1变量 493

10.2.2控制流工具 499

10.2.3 CASE 500

10.2.4 PRINT 504

10.2.5 RAISERROR 505

10.2.7运算符 508

10.2.6 FORMATMESSAGE 508

10.2.8标量函数 517

10.2.9表值函数 548

10.3 Transact-SQL示例和难题 549

10.3.1生成测试数据 550

10.3.2获取等级 554

10.3.3查找间隔之间的差别 559

10.3.4代替重申的选择 563

10.4全文搜索 565

10.4.1全文索引 566

10.4.2设置全文索引 568

10.4.3维护全文索引 570

10.4.4查询全文索引 574

10.4.5全文索引的性能考虑因素 582

10.5总结 583

11.1批处理文件 585

第十一章批处理文件、存储过程和函数 585

11.2例程 590

11.3存储过程 591

11.3.1嵌套的存储过程 593

11.3.2存储过程中的递归 594

11.3.3存储过程的参数 598

11.4用户定义的函数 602

11.4.1表变量 602

11.4.2标量值函数 604

11.4.3表值函数 607

11.4.4系统表值函数 609

11.4.5管理用户定义的函数 610

11.5将存储过程改写为函数 613

11.6滚动您自己的系统例程 613

11.6.1您自己的系统过程 613

11.6.2您自己的系统函数 615

11.7执行批处理文件或存储过程(和函数)存储的内容 617

11.7.1步骤1:解析命令并创建序列树 617

11.7.2步骤2:编译批处理文件 617

11.7.3步骤3:执行 617

11.7.4步骤4:重新编译执行计划 619

11.7.5例程的存储 621

11.7.6加密例程 621

11.7.7修改例程 624

11.8临时存储过程 624

11.8.1私有临时存储过程 625

11.8.2全局临时存储过程 625

11.8.3通过直接使用tempdb创建的过程 626

11.9自动启动存储过程 626

11.10系统存储过程 628

11.10.1常规系统过程 628

11.10.3 SQL Server Agent存储过程 630

11.10.2编目存储过程 630

11.10.4复制存储过程 631

11.10.5扩展存储过程 631

11.11 EXECUTE(“ANY STRING”) 637

11.12总结 639

第十二章事务和触发器 641

12.1事务 641

12.1.1明确事务和隐含事务 642

12.1.2事务中的错误检查 643

12.1.3事务的孤立级别 649

12.1.4事务的其他特性 659

12.1.5嵌套的事务块 659

12.1.6保存点 663

12.2触发器 664

12.2.1后触发器 665

12.2.2替代触发器 671

12.2.3管理触发器 674

12.2.4使用触发器执行引用动作 675

12.2.5递归触发器 682

12.3总结 683

第十三章 特殊的Transact-SQL操作:使用游标和大对象 685

13.1游标的基础知识 686

13.2游标和ISAM 688

13.2.1使用ISAM类型的应用程序的问题 691

13.3游标模型 692

13.3.1Transact-SQL游标 692

13.3.2 API服务器游标 692

13.3.3客户游标 694

13.3.4默认结果集 695

13.3.5 API服务器游标和Transact-SQL游标 695

13.4游标的适当使用 696

13.4.2查询操作 697

13.4.1逐行操作 697

13.4.3滚动应用程序 698

13.4.4选择游标 699

13.4.5游标成员、滚动和更改敏感度 700

13.5使用Transact-SQL游标 706

13.5.1 DECLARE 706

13.5.2 OPEN 708

13.5.3 FETCH 709

13.5.4 UPDATE 711

13.5.5 DELETE 712

13.5.6 CLOSE 712

13.5.7 DEALLOCATE 713

13.5.8最简单的游标语法 713

13.5.9完全可滚动的Transact-SQL游标 714

13.5.10使用Transact-SQL游标进行并行性控制 716

13.6游标变量 724

13.6.1获得游标信息 725

13.7使用文本和图像数据 731

13.7.1 WRITETEXT 732

13.7.2 READTEXT 735

13.7.3 UPDATETEXT 742

13.8总结 750

第四部分性能和调整 753

第十四章锁定 753

14.1锁管理器 753

14.1.1锁管理器和孤立级别 754

14.1.2原子锁 755

14.1.3死锁 755

14.2用户数据的锁类型 759

14.2.1锁的类型 759

14.2.2锁的粒度 763

14.2.5查看锁 768

14.2.3锁的持续时间 768

14.2.4锁的拥有关系 768

14.3锁的兼容性 776

14.4锁定的内部结构 777

14.4.1锁块 779

14.4.2锁拥有者块 781

14.4.3 syslockinfo表 781

14.5绑定连接 783

14.6行级锁定和页面级锁定 787

14.6.1锁的提升 788

14.7锁定暗示和跟踪标记 788

14.8总结 789

第十五章查询处理器 791

15.1 SQL管理器 791

15.2编译和优化 792

15.2.1编译 793

15.2.2优化 794

15.2.3查询优化器的工作方式 796

15.2.4联接选择 814

15.2.5其他处理策略 819

15.2.6维护统计信息 821

15.3过程缓存 826

15.4使用存储过程和缓存机制 829

15.4.1特殊缓存 830

15.4.2自动参数化 830

15.4.3 sp_executesql过程 831

15.4.4准备和执行方法 831

15.4.5共享缓存计划 832

15.4.6检查计划缓存 832

15.4.7缓存中的多个计划 834

15.4.8使用存储过程和其他缓存机制的时间 835

15.4.9重新编译存储过程 836

15.4.10存储过程的其他好处 837

15.5执行 838

15.6总结 838

第十六章调整查询 839

16.1开发小组 840

16.2应用程序和数据库设计 840

16.2.1规范化数据库 841

16.2.1评估重要事务 842

16.2.3精简表行的长度和键 844

16.3计划高峰使用 845

16.4交互式系统的感知响应时间 846

16.5原型、基准程序和测试 847

16.5.1开发方法学 850

16.6创建有用的索引 851

16.6.1谨慎选择群集索引 852

16.6.2使非群集索引具有较高的选择性 853

16.6.3裁剪对重要事务的索引 854

16.6.4注意列的顺序 856

16.6.5联接中使用的索引列 857

16.6.6根据需要创建或删除索引 857

16.6.7 Index Tuning Wizard 858

16.7监视查询的性能 860

16.7.1 STATISTICS IO 860

16.7.2 STATISTICS TIME 864

16.7.3计划显示 865

16.7.4使用查询暗示 879

16.7.5存储过程的优化 883

16.8并行性和一致性的权衡 885

16.9解决阻塞的问题 886

16.9.1索引和阻塞 888

16.10.1循环死锁示例 890

16.10解决死锁问题 890

16.10.2转换死锁示例 891

16.10.3防止死锁 893

16.10.4处理死锁 893

16.10.5自愿作为死锁的牺牲者 894

16.10.6观察锁定活动 894

16.10.7标识阻塞的原因 895

16.10.8锁暗示 901

16.11 隔离OLTP和DSS应用程序 905

16.12环境因素 905

16.12.1区分大小写 906

16.12.2可控性和ANSI兼容设置 907

16.12.3区域特定的SET选项 911

16.13总结 911

17.1操作系统的配置设置 913

17.1.1任务管理 913

第十七章配置和性能监视 913

17.1.2资源分配 914

17.1.3 PAGEFILE.SYS的位置 915

17.1.4文件系统选择 915

17.1.5不重要的服务 915

17.1.6网络协议 916

17.2 SQL Server的配置设置 916

17.2.1服务器范围的选项 916

17.2.2缓冲区管理器选项 928

17.2.3 SQLSERVER.EXE的启动参数 929

17.3系统维护 930

17.4监视系统行为 931

17.4.1 SQLProfiler 931

17.4.2 Syatem Monitor 946

17.4.3其他性能监视因素 955

17.5总结 955

参考书目 957