《SQL Server 2008高级程序设计》PDF下载

  • 购买积分:20 如何计算积分?
  • 作  者:(美)维埃拉著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2010
  • ISBN:9787302222729
  • 页数:730 页
图书介绍:本书全面介绍Microsoft SQL Server 2008的高级功能,帮助读者掌握SQL Server新功能、编写复杂查询、构建不同类型的数据结构、提高应用程序的性能以及管理高级脚本和错误。

第1章 回顾SQL Server中的对象 1

1.1 数据库的构成 1

1.2 数据库对象概述 2

1.2.1 数据库对象 2

1.2.2 事务日志 5

1.2.3 最基本的数据库对象:表 5

1.2.4 模式 6

1.2.5 文件组 7

1.2.6 图表 7

1.2.7 视图 8

1.2.8 存储过程 9

1.2.9 用户自定义函数 9

1.2.10 用户和角色 10

1.2.11 规则 10

1.2.12 默认值 10

1.2.13 用户自定义数据类型 10

1.2.14 全文目录 10

1.3 SQL Server数据类型 11

1.4 SQL Server对象标识符 15

1.4.1 需要命名的对象 15

1.4.2 命名规则 15

1.5 小结 16

第2章 工具 17

2.1 联机丛书 17

2.2 SQL Server配置管理器 18

2.2.1 服务管理 18

2.2.2 网络配置 19

2.2.3 协议 20

2.2.4 客户端配置 21

2.3 SQL Server Management Studio 23

2.3.1 启动Management Studio 23

2.3.2 查询编辑器 25

2.4 SQL Server Business Intelligence Development Studio 29

2.5 SQL Server集成服务(SSIS) 29

2.6 Reporting Services 29

2.7 Bulk Copy Program(bcp) 30

2.8 SQL Server Profiler 30

2.9 sqlcmd 30

2.10 小结 31

第3章 提出更好的问题:高级查询 33

3.1 子查询概述 34

3.2 构建嵌套子查询 34

3.2.1 使用单值SELECT语句的嵌套查询 35

3.2.2 使用返回多个值的子查询的嵌套查询 35

3.2.3 ANY、SOME和ALL运算符 37

3.3 相关子查询 37

3.3.1 相关子查询的工作方式 37

3.3.2 WHERE子句中的相关子查询 38

3.3.3 SELECT列表中的相关子查询 39

3.4 派生表 40

3.5 EXISTS运算符 42

3.6 INTERSECT和EXCEPT运算符 44

3.6 1 EXCEPT 45

3.6.2 INTERSECT 45

3.6.3 比较EXCEPT和INTERSECT与相应的EXISTS和NOT EXISTS语句 46

3.7 通用表表达式(CTE) 49

3.8 递归查询 50

3.9 合并 53

3.10 利用外部调用完成复杂操作 57

3.11 性能考虑 57

3.12 小结 59

第4章 XML集成 61

4.1 XML数据类型 62

4.1.1 定义XML数据类型的列 62

4.1.2 XML模式集合 63

4.1.3 创建、修改和删除XML模式集合 65

4.1.4 XML数据类型方法 67

4.1.5 施加超出模式集合范围的约束 72

4.2 提取XML格式的关系数据 73

4.2.1 FOR XML子句 73

4.2.2 OPENXML 98

4.3 有关XML索引的提示 102

4.4 层次数据概述 102

4.5 小结 103

第5章 细心推敲,大胆设计 105

5.1 进一步了解规范化 105

5.1.1 入手点 106

5.1.2 达到第三范式 107

5.1.3 其他的规范形式 107

5.2 关系 108

5.3 图表 108

5.3.1 几种关系类型 109

5.3.2 实体框 109

5.3.3 关系线 110

5.3.4 终止符 110

5.4 逻辑设计与物理设计 112

5.4.1 逻辑模型的用途 112

5.4.2 逻辑模型的组成 113

5.5 通过经典的BLOB处理基于文件的信息 114

5.6 子类别 117

5.6.1 子类别的类型 119

5.6.2 明确概念——实现子类别 119

5.6.3 子类别的物理实现 121

5.6.4 通过子类别增加可扩展性 121

5.7 数据库重用 122

5.7.1 可重用数据库的候选 122

5.7.2 如何分解事物 122

5.7.3 可重用性的高昂代价 123

5.8 反规范化 123

5.9 通过分区方法进行扩展 124

5.10 SQL Server关系图工具 125

5.10.1 表 126

5.10.2 处理约束 128

5.11 关于日期列 129

5.12 小结 130

第6章 核心存储和索引结构 131

6.1 SQL Server存储 131

6.1.1 数据库 132

6.1.2 文件 132

6.1.3 区段 132

6.1.4 页 133

6.1.5 行 135

6.1.6 全文目录 135

6.1.7 文件流 136

6.2 理解索引 136

6.2.1 “B”还是非“B”:B树 137

6.2.2 如何在SQL Server中访问数据 140

6.2.3 索引类型和索引导航 141

6.3 创建、修改和删除索引 146

6.3.1 CREATE INDEX语句 147

6.3.2 随约束隐含创建的索引 152

6.3.3 ALTER INDEX 152

6.3.4 DROP INDEX 154

6.4 明智地决定何时何地使用何种索引 154

6.4.1 选择性 155

6.4.2 注意代价 155

6.4.3 选择聚集索引 156

6.4.4 列排序问题 158

6.4.5 删除索引 158

6.4.6 使用数据库引擎优化顾问 158

6.5 维护索引 158

6.5.1 碎片 159

6.5.2 检测碎片 159

6.6 小结 166

第7章 更高级的索引结构 167

7.1 XML索引 167

7.1.1 主XML索引 168

7.1.2 辅助XML索引 169

7.1.3 创建XML索引 170

7.2 用户定义的数据类型 172

7.2.1 经典UDT 172

7.2.2 .NET UDT 173

7.2.3 表格式UDT 173

7.2.4 删除用户定义的类型 176

7.3 层次数据 176

7.3.1 理解深度与输出 176

7.3.2 HierarchyID类型结构 177

7.3.3 处理HierarchyID值——HierarchyID方法 178

7.3.4 索引层次数据 188

7.3.5 性能考虑 189

7.4 空间数据 190

7.4.1 空间概念 190

7.4.2 平面数据描述的实现——GEOMETRY数据类型 194

7.4.3 测量数据描述的实现——GEOGRAPHY类型 199

7.5 文件流 201

7.6 启用文件流 202

7.6.1 为数据库启用文件流 203

7.6.2 创建一个启用文件流的表 203

7.6.3 在T-SQL中使用文件流 204

7.6.4 在.NET中使用文件流 205

7.7 表压缩 205

7.8 小结 206

第8章 视图 209

8.1 回顾视图语法 209

8.2 更复杂的视图 210

8.3 使用T-SQL编辑视图 214

8.4 删除视图 215

8.5 审核:显示现有代码 215

8.6 保护代码:加密视图 217

8.7 关于模式绑定 218

8.8 使用VIEW METADATA使自己的视图看起来像一个表 219

8.9 索引(物化)视图 219

8.10 分区视图 221

8.11 小结 223

第9章 脚本和批处理 225

9.1 脚本的基本概念 225

9.2 批处理 226

9.2.1 批处理错误 228

9.2.2 使用批处理的时机 228

9.3 SQLCMD 231

9.4 动态SQL:使用EXEC命令生成即时代码 232

9.5 流控制语句 237

9.5.1 IF...ELSE语句 238

9.5.2 CASE语句 242

9.5.3 使用WHILE语句进行循环 245

9.5.4 WAITFOR语句 246

9.5.5 TRY/CATCH块 246

9.6 小结 249

第10章 高级编程 251

10.1 细看存储过程 251

10.1.1 输出参数 252

10.1.2 处理错误 254

10.2 表值参数(TVP) 264

10.3 调试 267

10.3.1 启动调试器 267

10.3.2 调试器的组件 268

10.3.3 启动后使用调试器 271

10.4 理解SQLCLR及SQL Server中的.NET编程 273

10.4.1 程序简介 273

10.4.2 编译程序集 273

10.4.3 将程序集上载到SQL Server上 276

10.4.4 创建基于程序集的存储过程 277

10.4.5 从程序集创建标量用户定义函数 278

10.4.6 创建表值函数 281

10.5 创建聚集函数 284

10.6 自定义数据类型 293

10.6.1 从程序集创建自己的数据类型 294

10.6.2 访问复杂数据类型 294

10.6.3 删除数据类型 295

10.7 小结 295

第11章 事务和锁 297

11.1 事务 297

11.1.1 BEGIN TRAN 298

11.1.2 COMMIT TRAN 299

11.1.3 ROLLBACK TRAN 299

11.1.4 SAVE TRAN 300

11.2 SQL Server日志的工作方式 304

11.2.1 使用CHECKPOINT命令 305

11.2.2 在服务器正常关机时执行 305

11.2.3 在更改数据库时执行 306

11.2.4 在启用Truncate on Checkpoint选项时执行 306

11.2.5 在恢复时间超过设置的恢复间隔时执行 306

11.2.6 失败与恢复 306

11.2.7 隐式事务 307

11.3 锁和并发 308

11.3.1 通过锁可以防止的问题 309

11.3.2 可锁的资源 312

11.3.3 锁升级以及锁对性能的影响 312

11.3.4 锁模式 313

11.3.5 锁的兼容性 314

11.3.6 指定特定的锁类型——优化器提示 315

11.4 设置隔离级别 318

11.4.1 READ COMMITTED 318

11.4.2 READ UNCOMMITTED 319

11.4.3 REPEATABLEREAD 319

11.4.4 SERIALIZABLE 319

11.4.5 SNAPSHOT 320

11.5 处理死锁(也称作“A 1205”) 320

11.5.1 SQL Server判断死锁的方式 321

11.5.2 如何选择死锁牺牲品 321

11.5.3 避免死锁 321

11.6 小结 323

第12章 触发器 325

12.1 触发器的含义 326

12.1.1 ON 327

12.1.2 WITH ENCRYPTION 327

12.1.3 FOR|AFTER与INSTEAD OF子句 327

12.1.4 WITH APPEND 330

12.1.5 NOT FOR REPLICATION 330

12.1.6 AS 330

12.2 为数据完整性规则使用触发器 330

12.2.1 处理源自其他表的要求 331

12.2.2 使用触发器检查更新的差异 333

12.2.3 使用触发器实现自定义错误消息 335

12.3 触发器的其他常见用途 335

12.3.1 更新摘要信息 336

12.3.2 向反规范化的表输入数据以用于报告 336

12.3.3 设置条件标志 336

12.4 其他触发器问题 339

12.4.1 嵌套触发器 339

12.4.2 递归触发器 339

12.4.3 触发器调试 340

12.4.4 触发器不妨碍架构的修改 340

12.4.5 不必删除就可以禁用触发器 340

12.4.6 触发器的触发顺序 341

12.5 INSTEAD OF触发器 342

12.5.1 INSTEAD OF INSERT触发器 344

12.5.2 INSTEAD OF UPDATE触发器 346

12.5.3 INSTEAD OF DELETE触发器 346

12.6 IF UPDATE()和COLUMNS_UPDATED() 348

12.6.1 UPDATE()函数 348

12.6.2 COLUMNS_UPDATED()函数 348

12.7 性能考虑 350

12.7.1 触发器不是主动的而是被动的 350

12.7.2 触发进程与触发器之间不存在并发问题 350

12.7.3 简洁明了 351

12.7.4 选择索引时不要忘记触发器 351

12.7.5 不要尝试在触发器中回滚 351

12.8 删除触发器 351

12.9 小结 351

第13章 SQL游标 353

13.1 游标的含义 353

13.2 游标的生命期 354

13.3 游标的类型和扩展的声明语法 358

13.3.1 作用域 359

13.3.2 可滚动性 363

13.3.3 游标类型 365

13.3.4 并发性选项 375

13.3.5 检测游标类型转换:TYPE_WARNING 378

13.3.6 FOR<SELECT> 380

13.3.7 FOR UPDATE 380

13.4 在游标中导航:FETCH语句 380

13.5 在游标中修改数据 381

13.6 小结 383

第14章 Reporting Services 385

14.1 报表服务概述 385

14.2 Reporting Services入门 386

14.2.1 管理Reporting Services的工具 386

14.2.2 访问Reporting Services的其他方法 387

14.3 报表服务器项目 387

14.3.1 数据源 388

14.3.2 使用报表向导 390

14.3.3 编辑报表 394

14.3.4 参数化报表 397

14.3.5 提供参数值并控制其使用 398

14.3.6 添加图表 403

14.3.7 链接报表 404

14.3.8 部署报表 405

14.4 有关RDL的简注 405

14.5 小结 406

第15章 bcp和其他基本的大容量操作 407

15.1 bcp实用工具 408

15.1.1 bcp语法 408

15.1.2 bcp导入 411

15.1.3 bcp导出 415

15.2 格式化文件 416

15.2.1 如果列不匹配 418

15.2.2 使用格式化文件 421

15.2.3 尽量提高导入性能 421

15.3 BULK INSERT 422

15.4 OPENROWSET(BULK) 423

15.4.1 ROWS_PER_BATCH 423

15.4.2 SINGLE_BLOB、SINGLE_CLOB或SINGLE_NCLOB 423

15.5 小结 424

第16章 开始集成 425

16.1 理解问题 425

16.2 包的综述 426

16.2.1 任务 427

16.2.2 主窗口 429

16.2.3 解决方案资源管理器 431

16.2.4 属性窗口 431

16.3 创建简单的包 431

16.4 执行包 435

16.4.1 使用执行包实用工具 436

16.4.2 在Management Studio中执行 438

16.5 小结 438

第17章 复制 439

17.1 复制的基础知识 440

17.1.1 计划复制时需要考虑的事项 440

17.1.2 复制角色 442

17.1.3 订阅 443

17.1.4 订阅服务器的类型 443

17.1.5 筛选数据 443

17.2 复制模型 443

17.2.1 快照复制 444

17.2.2 合并复制 447

17.2.3 事务复制 449

17.2.4 立即更新的订阅服务器 452

17.2.5 混合复制类型 452

17.3 复制的拓扑结构 453

17.3.1 简单模型 453

17.3.2 混合模型 455

17.4 制定复制计划 457

17.4.1 涉及的数据 457

17.4.2 移动设备 458

17.5 在Management Studio中设置复制 458

17.5.1 为复制配置服务器 458

17.5.2 配置发布 462

17.5.3 通过Management Studio设置订阅服务器 465

17.5.4 使用复制数据库 468

17.6 复制管理对象(RMO) 469

17.7 小结 470

第18章 全文搜索 471

18.1 全文搜索的体系结构 472

18.2 设置全文索引和目录 473

18.2.1 为数据库启用全文功能 474

18.2.2 创建、修改、删除和操作全文目录 474

18.2.3 创建、修改、删除和操作全文索引 476

18.2.4 针对旧语法的说明 481

18.3 更多有关索引填充的内容 481

18.4 全文查询语法 482

18.4.1 CONTAINS 483

18.4.2 FREETEXT 484

18.4.3 CONTAINSTABLE 484

18.4.4 FREETEXTTABLE 486

18.4.5 处理短语 486

18.4.6 布尔操作 487

18.4.7 邻近词 487

18.4.8 权重 488

18.4.9 屈折性 489

18.5 停止词 489

18.6 小结 491

第19章 安全性 493

19.1 安全性基础知识 494

19.1.1 一个人,一个登录名,一个密码 494

19.1.2 密码过期 495

19.1.3 密码长度和组成 496

19.1.4 尝试登录的次数 497

19.1.5 用户和密码信息的存储 497

19.2 安全性选项 498

19.2.1 SQL Server安全性 499

19.2.2 创建和管理登录 499

19.2.3 Windows身份验证 505

19.3 用户权限 505

19.3.1 授予访问特定数据库的权限 506

19.3.2 授予访问数据库中对象的权限 507

19.3.3 用户权限和语句级别的权限 512

19.4 服务器和数据库角色 513

19.4.1 服务器角色 514

19.4.2 数据库角色 515

19.5 应用程序角色 518

19.5.1 创建应用程序角色 519

19.5.2 向应用程序角色添加权限 519

19.5.3 使用应用程序角色 519

19.5.4 删除应用程序角色 521

19.6 更高级的安全性 521

19.6.1 如何处理guest帐户 521

19.6.2 TCP/IP端口设置 522

19.6.3 不要使用sa帐户 522

19.6.4 保持xp_cmdshell的隐秘性 522

19.6.5 不要忘记把视图、存储过程和UDF作为安全性工具 522

19.7 证书和非对称密钥 523

19.7.1 证书 524

19.7.2 非对称密钥 524

19.7.3 数据库加密 524

19.8 小结 524

第20章 设计性能卓越的数据库 525

20.1 优化时机 526

20.2 选择索引 527

20.3 客户端和服务器端处理的对比 528

20.4 策略上的反规范化 529

20.5 合理组织存储过程 529

20.5.1 保持事务短小 529

20.5.2 尽可能使用限制性最少的事务隔离级别 530

20.5.3 必要时部署多个解决方案 530

20.5.4 尽可能避免使用游标 530

20.6 使用临时表 531

20.6.1 使用临时表分解复杂问题 531

20.6.2 使用临时表以允许在工作数据上创建索引 532

20.7 及时更新代码 532

20.8 注意细节问题 533

20.9 硬件考虑事项 533

20.9.1 独占式使用服务器 534

20.9.2 I/O密集与CPU密集的对比 534

20.9.3 OLTP和OLAP的对比 538

20.9.4 现场和非现场的对比 538

20.9.5 宕机的风险 539

20.9.6 丢失数据 540

20.9.7 性能就是全部吗 540

20.9.8 厂商支持 540

20.9.9 理想的系统 541

20.10 小结 541

第21章 性能优化工具 543

21.1 优化时机(第二部分) 543

21.2 日常维护 544

21.3 故障排除 544

21.3.1 数据收集器 545

21.3.2 各种显示计划和STATISTICS 545

21.3.3 数据库控制台命令(DBCC) 550

21.3.4 动态管理视图 551

21.3.5 活动监视器 551

21.3.6 SQL Server Profiler 554

21.3.7 性能监视器(PerfMon) 556

21.4 小结 558

第22章 管理 559

22.1 计划作业 560

22.1.1 创建操作员 561

22.1.2 创建作业和任务 564

22.2 备份和恢复 580

22.2.1 创建备份——也叫做“转储” 580

22.2.2 恢复模型 585

22.2.3 恢复 586

22.3 索引维护 590

22.3.1 ALTER INDEX 590

22.3.2 索引名 591

22.3.3 表名或视图名 591

22.3.4 REBUILD 591

22.3.5 DISABLE 592

22.3.6 REORGANIZE 592

22.4 数据存档 593

22.5 PowerShell 593

22.5.1 尝试PowerShell 594

22.5.2 在PowerShell中导航 598

22.5.3 关于PowerShell的最后一点说明 599

22.6 基于策略的管理 600

22.7 小结 600

第23章 SMO:SQL管理对象 601

23.1 SQL Server管理对象模型的发展历程 601

23.1.1 SQL分布式管理对象 602

23.1.2 SQL名称空间 602

23.1.3 Windows Management Instrumentation 602

23.1.4 SMO 603

23.2 SMO对象模型 604

23.3 实例演练 605

23.3.1 开始 605

23.3.2 创建数据库 606

23.3.3 创建表 607

23.4 删除数据库 610

23.5 备份数据库 611

23.6 生成脚本 612

23.7 完整的代码 614

23.8 小结 618

第24章 数据仓库 619

24.1 考虑不同的需求 619

24.1.1 联机事务处理(OLTP) 620

24.1.2 联机分析处理(OLAP) 620

24.1.3 数据挖掘简介 621

24.1.4 OLTP与OLAP 621

24.2 维度数据库 622

24.2.1 事实表 622

24.2.2 维度表 623

24.2.3 星形和雪花模式 624

24.2.4 数据立方体 624

24.3 数据仓库的概念 625

24.3.1 数据仓库的特点 625

24.3.2 数据市场 626

24.4 SQL Server的集成服务 627

24.4.1 数据验证 627

24.4.2 数据清洗 627

24.5 创建分析服务解决方案 627

24.6 访问立方体 633

24.7 小结 635

第25章 保证良好的连接性 637

附录A 系统函数 639

附录B 分析元数据 691

附录C 基础知识 713