目录 1
第1章 简介 1
1.1 本书的读者对象 2
1.2 本书涵盖的内容 2
1.3 需求 4
1.3.1 存储过程编程需求 4
1.3.2 XML编程需求 4
1.4 示例数据库和其他资源 5
1.4.1 示例数据库的安装 6
1.4.2 示例数据库的目的和设计 7
1.4.3 数据库关系图 8
第2章 SQL Server环境 15
2.1 SQL Server 2000工具 15
2.1.1 服务管理器 16
2.1.2 查询分析器 17
2.1.3 企业管理器 18
2.1.4 DTS和导入/导出数据 20
2.1.5 osql和isql 21
2.1.6 SQL Server Profiler 22
2.1.8 服务器网络实用工具 23
2.1.7 客户端网络实用工具 23
2.1.9 帮助子系统和SQL Server联机丛书 24
2.1.10 Web上的SQL Server 25
2.2 存储过程的基本操作 25
2.2.1 存储过程的概念 25
2.2.2 从查询分析器中执行存储过程 26
2.2.3 从企业管理器管理存储过程 29
2.2.4 在企业管理器中编辑存储过程 33
2.2.5 在查询分析器中编辑存储过程 33
2.2.6 语法错误 35
2.3.1 为什么烦恼 37
2.3 命名约定 37
2.3.2 命名对象和变量 38
2.3.3 建议约定 40
第3章 存储过程的设计概念 44
3.1 存储过程剖析 44
3.1.1 组成 45
3.1.2 功能 47
3.1.3 语法 53
3.2 存储过程类型 55
3.3.1 编译和执行过程 56
3.3 编译 56
3.3.2 执行计划的重用 57
3.3.3 重新编译存储过程 60
3.3.4 存储存储过程 61
3.4 管理存储过程 63
3.4.1 列出存储过程 63
3.4.2 查看存储过程代码 66
3.4.3 重命名存储过程 67
3.4.4 删除存储过程 67
3.4.5 列出对象的相关性 68
3.5.2 复杂业务规则和约束的一致性实现 70
3.5 存储过程在数据库应用程序开发中的作用 70
3.5.1 数据完整性实施 70
3.5.3 模块化设计 71
3.5.4 可维护性 71
3.5.5 减少网络流量 71
3.5.6 加快执行速度 72
3.5.7 安全实施 72
第4章 T-SQL的基本编程结构 73
4.1 T-SQL标识符 73
4.2 数据库对象限定符 75
4.3 数据类型 76
4.3.1 字符字符串 76
4.3.2 Unicode字符字符串 77
4.3.3 日期和时间数据类型 78
4.3.4 整数 79
4.3.5 近似数字 80
4.3.6 精确数字 80
4.3.7 货币数据类型 81
4.3.8 二进制数据类型 81
4.3.9 特殊数据类型 82
4.4 变量 85
4.4.1 局部变量 85
4.4.2 全局变量 89
4.4.3 表变量 91
4.5 流控制语句 93
4.5.1 注释 93
4.5.2 语句块:Begin...End 96
4.5.3 条件执行:If语句 97
4.5.4 循环:While语句 101
4.5.5 非条件执行:GoTo语句 104
4.6 游标 105
4.5.6 调度执行:WaitFor语句 105
4.6.1 T-SQL游标 106
4.6.2 和游标有关的语句和函数 109
4.6.3 与游标有关的一些问题 111
4.6.4 游标的合理使用 111
第5章 函数 114
5.1 函数的使用 114
5.1.1 在选择和赋值语句中使用 114
5.1.3 在表达式中使用 115
5.1.2 用作选择条件的一部分 115
5.1.4 作为Check约束和Default约束 116
5.1.5 Instead of表 116
5.2 函数类型 117
5.2.1 标量函数 117
5.2.2 聚合函数 142
5.2.3 行集函数 143
第6章 复合T-SQL结构:批处理、脚本和事务 146
6.1 批处理 146
6.1.2 批处理和错误 148
6.1.1 使用批处理 148
6.1.3 DDL批处理 151
6.1.4 自足内容 152
6.2 脚本 154
6.3 事务 157
6.3.1 自动提交事务 157
6.3.2 显式事务 158
6.3.3 隐式事务 160
6.3.4 事务处理体系结构 160
6.3.5 嵌套事务 161
6.3.7 保存点 166
6.3.6 命名事务 166
6.3.8 锁定 169
6.3.9 分布式事务 172
6.3.10 典型的锁定问题 174
第7章 调试和错误处理 177
7.1 调试 177
7.1.1 “Bug”的概念 177
7.1.2 调试过程 178
7.1.3 调试工具和技术 180
7.1.4 SQL事件探查器 193
7.1.5 典型错误 196
7.2 错误处理 200
7.2.1 Raiserror 200
7.2.2 使用错误处理 202
7.2.3 为什么烦恼 202
7.2.4 错误处理策略 203
7.2.5 相关的错误处理方法 206
7.2.6 Xact_Abort 211
7.2.7 另一种相关的错误处理方法 215
8.1 存储过程类型 221
第8章 特殊类型的过程 221
8.1.1 用户定义的存储过程 222
8.1.2 系统存储过程 222
8.1.3 扩展存储过程 223
8.1.4 临时存储过程 229
8.1.5 全局临时存储过程 230
8.1.6 远程存储过程 230
8.2 用户定义函数 231
8.2.1 用户定义函数的设计 231
8.2.2 用户定义的表值函数 235
8.2.3 内联用户定义的表值函数 238
8.2.4 在企业管理器中管理用户定义函数 239
8.3 触发器 241
8.3.1 After触发器的物理设计 242
8.3.2 处理多条记录上的改动 248
8.3.3 嵌套和递归式触发器 250
8.3.4 触发器约束 250
8.3.5 Instead-of触发器 251
8.3.6 视图上的触发器 252
8.3.8 管理触发器 254
8.3.7 触发器执行的顺序 254
8.3.9 关于触发器设计的建议 257
8.3.10 触发器中的事务管理 259
8.3.11 使用触发器 260
8.4 视图 265
8.4.1 标准SQL视图的设计 266
8.4.2 动态视图 270
8.4.3 INFORMATION_SCHEMA视图 271
8.4.4 索引视图 272
8.4.5 分区视图 274
8.4.6 使用SQL视图 287
第9章 高级存储过程编程 291
9.1 动态构造的查询 292
9.1.1 执行字符串 292
9.1.2 通过表单的查询 293
9.1.3 数据脚本生成器 296
9.1.4 使用sp_executesql存储过程 300
9.1.5 安全性含义 301
9.2 使用timestamp值的乐观锁定 304
9.2.1 timestamp 305
9.2.2 TSEqual()函数 306
9.2.3 timestamp转换 308
9.3 全文搜索和索引 310
9.4 嵌套存储过程 312
9.4.1 使用临时表传递记录集给嵌套存储过程 312
9.4.2 使用游标传递记录集给嵌套存储过程 315
9.4.3 如何处理存储过程的结果集 318
9.5 使用标识值 323
9.5.1 一个标准问题和解决方案 323
9.5.2 标识值和触发器 324
9.6 GUID 326
9.5.3 范围内的最后一个标识值 326
9.7 使用Min()或Max()函数的While循环 328
9.8 使用sp_MSForEachTable和sp_MSForEachDb进行循环 329
9.9 属性管理 331
第10章 与SQL Server环境交互 333
10.1 OLE自动化/COM对象的执行 334
10.2 运行程序 337
10.3 运行Windows脚本文件 338
10.4 运行/循环DTS包 338
10.5 和NT注册表进行交互 340
10.5.2 xp_regwrite 341
10.5.1 xp_regread 341
10.6 作业 342
10.6.1 作业的管理 342
10.6.2 另一个选择——Job Scheduler 347
10.6.3 用于维护作业的存储过程 347
10.6.4 操作人员和警报 348
10.7 SQL Server和Web 349
10.7.1 Web助手 349
10.7.2 Web作业存储过程 353
10.7.3 Web页面模板 355
10.8 电子邮件 356
10.9 安全性 360
10.9.1 安全性体系结构 360
10.9.2 实现安全性 362
10.9.3 登录和用户名的同步 368
10.9.4 使用存储过程、用户自定义函数和视图管理应用程序安全性 371
10.9.5 使用代理用户管理应用程序安全性 373
10.9.6 使用应用程序角色管理应用程序安全性 373
11.1 源代码管理的概念 375
第11章 源代码管理和数据库部署 375
11.1.1 Microsoft Visual SourceSafe简介 376
11.1.2 管理Visual SourceSafe数据库 377
11.1.3 在Visual Studio.NET中向Visual SourceSafe添加数据库对象 377
11.1.4 在Visual Studio.NET中管理创建脚本 380
11.1.5 Visual SourceSafe浏览器 382
11.1.6 添加数据库对象到Visual SourceSafe中:传统方法 386
11.2 数据库部署 388
11.2.1 完整数据库的部署:传统方法 388
11.2.2 单个对象的部署 390
12.1 环境特征 400
第12章 用于Web搜索引擎的存储过程 400
12.2 一个简单的解决方案 401
12.3 缺陷 402
12.4 可用的解决方案 403
12.4.1 结果拆分 404
12.4.2 快速查询 413
12.4.3 高级查询 417
第13章 面向数据库开发人员的XML简介 421
13.1 XML的发展 421
13.2.2 构造标记语言块 423
13.2.1 标记语言简介 423
13.2 XML简介 423
13.2.3 XML元素和属性 424
13.2.4 处理指令 425
13.2.5 文档类型定义 425
13.2.6 XML注释和CDATA部分 427
13.2.7 字符引用和实体引用 427
13.2.8 XML命名空间 428
13.2.9 XML文档的结构 429
13.2.10 XML解析器和DOM 430
13.3.1 XML Schema和XML模式 431
13.3 XML的文档属性 431
13.3.2 XML数据简化(XDR)模式 432
13.3.3 XML Schema(XSD) 436
13.4 XML中的链接和查询 446
13.4.1 XPointer 446
13.4.2 XPath 447
13.5 转换XML 449
13.5.1 XSL 450
13.5.2 XSLT 450
13.6.1 组织之间的信息交换 451
13.6 为什么要使用XML 451
13.6.2 信息发布 452
第14章 使用SQLXML发布信息 453
14.1 ForXML子句 453
14.1.1 Auto模式 454
14.1.2 聚集函数 458
14.1.3 计算列 459
14.1.4 Elements选项 459
14.1.5 XMLData选项 460
14.1.6 BINARY Base64选项 461
14.1.8 Explicit模式 462
14.1.7 Raw模式 462
14.2 使用HTTP发布数据库信息 471
14.2.1 对通过HTTP协议的数据库访问进行配置 471
14.2.2 使用URL访问数据库信息 475
14.2.3 虚拟目录的故障排除 477
14.2.4 通过HTTP执行存储过程 478
14.2.5 使用模板访问数据库信息 479
14.2.6 把查询通过POST传递到服务器 488
14.2.7 基于带注释的XDR模式的XML视图 491
14.2.8 基于带注释的XSD模式的XML视图 500
14.3 可编程的数据库访问 505
14.4 使用ADO.NET检索XML数据 513
14.4.1 使用SqlCommand 513
14.4.2 使用DataSet对象 514
14.5 客户端的XML处理 515
14.5.1 使用URL查询 516
14.5.2 使用模板 516
14.5.3 使用SQLXML受控类 517
14.5.4 带有ForXML子句的查询的处理 517
15.1.1 文档准备 519
15.1 OpenXML() 519
第15章 使用SQLXML修改数据库 519
15.1.2 关闭文档 520
15.1.3 检索XML信息 521
15.1.4 OpenXML()中的元属性 524
15.1.5 如果XML文档长度大于8000个字符会怎样 526
15.2 UpdateGrams 527
15.2.1 执行UpdateGrams 528
15.2.2 以元素为中心的UpdateGram和以属性为中心的UpdateGram 530
15.2.3 带参数的UpdateGrams 531
15.2.5 返回标识值 533
15.2.4 把参数设为Null 533
15.2.6 特殊字符 535
15.2.7 幕后的UpdateGrams 536
15.2.8 带有UpdateGrams的乐观锁定 536
15.2.9 一个UpdateGram中的多条记录和多个表 538
15.3 DiftGrams 539
15.3.1 使用DiffGram插入数据 540
15.3.2 使用DiffGram更新数据 542
15.3.3 使用DiffGram删除数据 543
15.3.5 后台的DiffGram 544
15.3.4 使用DiffGram处理多条记录 544
15.3.6 使用可编程的SqlXmlCommand执行DiffGram 546
15.3.7 使用URL执行DiffGram 546
15.3.8 在DataSet改动之后产生DiffGram 547
15.3.9 调试DiffGram 548
15.4 SQLXML BulkLoad 548
15.4.1 从.NET应用程序执行SQLXML BulkLoad 549
15.4.2 错误日志文件 550
15.4.3 从DTS(使用VBScript)执行BulkLoad 550
15.4.6 数据完整性 552
15.4.5 BulkLoad事务 552
15.4.4 Schema Generation 552
15.4.7 表锁 553
15.4.8 使用SQLXML BulkLoad 553
15.4.9 映射模式 553
15.5 XML Web Services 555
15.5.1 SOAP消息和XML Web Services体系结构 555
15.5.2 使用SQLXML创建XML Web服务 556
15.5.3 创建.NET SOAP客户端程序 558
附录 SQL Server2000中的T-SQL与XML数据类型 566