SQL Server 2005开发者指南

SQL Server 2005开发者指南
作 者: 布启敏 舒利文 何玉洁 顾小波
出版社: 清华大学出版社
丛编项: 微软技术丛书
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: Sever
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  Bob Beauchemin,他是一名精通数据库应用的专业技术人员、架构师、讲师、课程作者兼作家,目前担任SQL-skills公司的开发技术主管。他曾经担任很多种数据库的开发者和DBA,包括DB2,Oracle,Sybase和Microsoft SQL Sever在内的关系数据库,还有IMS/DB、IDMS等非关系数据库。在过去的两年里,他通过Ascend项目向世界各地500多个学生讲授SQL Server 2005课程。Bob是《SQL Server 2005开发初探》的主要作者,同时也是《ADO.NET本质论》的作者。另外,他还针对SQL Server与其他数据库、数据库安全、ADO.NET和OLE DB,发表了很多文章。

内容简介

本书由SQL Server领域内两位专家所写,结合清楚的描述和大量范例,全面介绍了SQL Server 2005中对开发者有用的新特性。同时还给出有价值的最佳实践和指导,便于开发者迅速掌握这些新特性,在适当的时机选择适当的特性开发新一代数据库应用程序。全书共17章,书中内容完全基于SQL Server 2005正式版,且经过广泛的探讨和筛选,对SQL Server开发者具有非常高的参考价值。很少有技术像SQL Server 2005那样倍受期待。如今,两名SQL Server领域内的专家为我们带来了绝对权威的参考指南,内容准确、主题丰富,包含大量范例。《SQL Server 2005开发者指南》解释了微软参考文档、白皮书和网上文档中没有涉及到的细节,向开发者解释了如何充分利用SQL Server 2005的关键创新特性。自从SQL Server 2005最早的alpha发行以来,作者就广泛深入SQL Server开发者,和他们分享使用经验和技巧,聆听开发者的心声。本书实际介绍了新的SQL Server 2005数据模型,内置的.NET宿主、增强的可编程性、遵循SQL:1999等等。几乎每一个关键概念都会通过范例代码来诠释。这些代码完全根据产品最终发布的版本进行了更新和测试。本书重要主题:·将SQL Server 2005作为.NET运行时宿主:在增强安全性、可靠性和性能的同时进一步扩展了服务器的功能·用.NET语言编写过程、函数、触发器和类型·利用T-SQL增强特性获得更健壮的错误处理、更高效的查询和更容易理解的语法·实现本地SQL Server 2005 Web服务·用ADO.NET、经典ADO和其他API为SQL Server 2005编写高效、健壮的客户端应用·充分利用用户定义类型(UDT)、查询通知、可升级事务和多活动结果集·使用SQL 管理对象(SMO)、SQL Service Broker和SQL Server Notification Services来构建集成的应用程序

图书目录

第1章 引言 1

1.1 .NET Framework和Microsoft平台 1

1.2 .NET Framework对SQL Server的

影响 2

1.3 SQL :1999标准:扩展关系模型 5

1.4 用户定义的类型与SQL Server 7

1.5 XML:数据和文档存储 9

1.6 Web服务:XML作为一种封送

格式 14

1.7 客户访问以及客户 15

1.7.1 客户端数据库API和SQL

Server 2005 15

1.7.2 客户端基于XML 的API与

SQL Server 2005的集成 15

1.8 扩展SQL Server到平台:Service

Broker和Notification Service 16

小结 17

第2章 宿主运行时: SQL Server

作为一个运行时宿主 18

2.1 为什么要关心宿主的工作原理 18

2.2 什么是.NET Framework

运行时宿主 19

2.3 SQL Server作为一个运行时宿主 20

2.3.1 SQL Server的资源管理 21

2.3.2 异常情况处理 22

2.3.3 加载代码 24

2.3.4 安全性 25

2.4 加载运行时:进程和AppDomain 26

2.5 安全代码:运行时如何安全运行

“外部”代码 28

2.6 代码存在何处:存储.NET Framework

程序集(CREATE ASSEMBLY) 29

2.7 程序集依赖:当自己的程序集使用

其他程序集时 33

2.8 程序集和SQL架构:谁拥有程序集

(信息架构) 33

2.8.1 系统元数据表和

INFORMATION_SCHEMA 33

2.8.2 程序集元数据 34

2.9 维护用户程序集

(ALTER ASSEMBLY,

DROP ASSEMBLY) 36

2.10 遵循规范 38

2.11 结论 39

小结 39

第3章 .NET CLR语言中的过程和

函数 40

3.1 扩展SQL Server 40

3.2 CLR扩展基础 41

3.3 CLR扩展详解 49

3.4 System.Data.SqlTypes 50

3.4.1 关于空值的一些说明 51

3.4.2 使用SqlTypes 52

3.5 参数和返回值 62

3.6 用户定义的函数 62

3.7 表值函数 66

3.8 存储过程 71

3.9 触发器 72

小结 73

第4章 进程内数据访问 74

4.1 用SqlClient编程 74

4.2 上下文:SqlContext类 76

4.3 连接 79

4.4 命令:使事情发生 80

4.5 获得结果 83

4.6 事务 85

4.6.1 TransactionScope的

另类用法 88

4.6.2 最佳实践 89

4.7 管道 90

4.8 创建并发送新的行集 92

4.9 使用WindowsIdentity 93

4.10 从SQLCLR调用一个Web服务 94

4.11 异常处理 97

4.12 SqlTriggerContext 101

4.13 不能在服务器端使用的

SqlClient类 102

小结 102

第5章 用户定义的类型和聚合函数 103

5.1 为什么需要用户定义的类型 103

5.2 用户定义的类型概览 104

5.3 创建用户定义的类型 105

5.3.1 空值的实现 107

5.3.2 字符串的实现 108

5.3.3 二进制的实现 111

5.3.4 IBinarySerialize.Read/Write 113

5.3.5 创建用户定义类型 114

5.3.6 公共性质、字段和方法 116

5.3.7 帮助函数 122

5.3.8 验证用户定义类型 124

5.3.9 维护用户定义类型的定义 125

5.3.10 用户定义类型和XML 126

5.3.11 对象是否应该用用户定义

类型来表示 131

5.3.12 用户定义的聚合函数 143

5.3.13 实现用户定义的聚合 145

5.3.14 创建用户定义的聚合函数 148

5.3.15 Format.Native与

Format.UserDefined 148

小结 150

第6章 安全性 152

6.1 SQL Server 2005 中新的安全性

特征 152

6.2 默认设置为关闭的可选特征 153

6.2.1 配置安全性设置 153

6.2.2 安全性和元数据 155

6.3 增强的SQL Server安全性概念简单

回顾 155

6.3.1 认证和授权:用户和权限 155

6.3.2 执行上下文和拥有权链 160

6.4 SQL Server 密码策略和证书 163

6.5 加密密钥和内置加密函数 165

6.6 加密函数 167

6.7 用户和架构的分离 172

6.8 同义词 175

6.9 指定过程代码的执行上下文 176

6.10 代码签名 179

6.11 SQL Server权限和SQLCLR

对象 181

6.12 程序集权限:谁可以编目和

使用程序集 182

6.13 在SQL Server安全级别内,.NET

Framework代码可以做什么? 186

6.13.1 代码访问安全性入门 186

6.13.2 代码访问安全性和.NET

Framework程序集 187

小结 190

第7章 SQL引擎增强 191

7.1 SQL引擎的改进 191

7.2 SNAPSHOT隔离 191

7.2.1 版本控制的缺点 197

7.2.2 版本控制监视 198

7.3 数据定义语言触发器 199

7.4 事件通知 203

7.5 大值数据类型 205

7.6 用新的BULK提供者加载数据 208

7.7 语句级重编译 208

7.8 查询提示、计划指南和计划强制 209

小结 213

第8章 T-SQL语言的增强 215

8.1 Transact-SQL的改进 215

8.2 错误处理 215

8.3 INTERSECT和EXCEPT 225

8.4 TOP 228

8.5 ON DELETE和ON UPDATE 230

8.6 OUTPUT 232

8.7 APPLY操作符 235

8.8 通用表表达式 237

8.9 递归查询 243

8.10 PIVOT和UNPIVOT操作符 249

8.10.1 PIVOT 249

8.10.2 UNPIVOT 253

8.11 分级和分区 254

8.11.1 ROW_NUMBER 255

8.11.2 RANK 256

8.11.3 DENSE_RANK 257

8.11.4 NTILE 257

8.11.5 PARTITION BY 258

8.11.6 聚合分区 259

8.12 TABLESAMPLE 261

小结 264

第9章 数据库中的XML:

    XML数据类型 265

9.1 XML数据类型 265

9.2 在表中使用XML数据类型 266

9.3 使用XML数据变量和参数 270

9.4 有类型和无类型的XML:分类和

使用XML架构集合 271

9.4.1 SQL Server XML

架构集合 272

9.4.2 有类型的XML 273

9.4.3 XML架构和架构集合的

管理 275

9.4.4 XML架构集合的安全性和

强类型实例 277

9.5 在XML列中创建索引 278

9.6 XML类型函数 279

9.7 SELECT…FOR XML的增强 279

9.7.1 FOR XML PATH模式 281

9.7.2 生成XML数据类型 282

9.7.3 生成一个内联XSD格式的

架构 283

9.7.4 NULL数据库值 284

9.7.5 产生根元素 285

9.7.6 其他特征 286

9.8 SQL和XML数据类型的映射 287

9.8.1 将SQL类型映射到XML

类型 287

9.8.2 String,Binary和

Decimal类型 288

9.8.3 其他通用的数据类型 289

9.8.4 Date数据类型 289

9.8.5 基于模式的数据类型 289

9.8.6 通配符数据类型 290

9.8.7 可为空性 290

9.9 增强的OpenXML 290

9.10 从文件加载XML到数据库中 291

9.11 ANSI SQL标准兼容性 292

9.11.1 XML数据类型 293

9.11.2 将SQL目录和表映射到

XML 294

9.11.3 将SQL数据类型映射为

XML数据类型 295

小结 296

第10章 XML查询语言:XQuery和

XPath 297

10.1 什么是XQuery 297

10.2 XQuery入门 298

10.2.1 XQuery序 301

10.2.2 XQuery体 302

10.3 比较XQuery和SQL的异同 307

10.4 在XQuery中使用XML数据

类型 310

10.4.1 xml.exist(字符串XQuery

文本) 310

10.4.2 xml.value (字符串xquery

文本, 字符串SQLType) 311

10.4.3 xml.query(字符串XQuery

文本) 313

10.4.4 xml.node(字符串XQuery

文本) 315

10.4.5 XQuery标准函数和

操作符 318

10.4.6 SQL Server XQuery函数和

操作符 319

10.5 SQL Server支持的XQuery函数 319

10.6 SQL Server支持的Xquery

操作符 320

10.6.1 SQL Server XQuery扩展

函数 321

10.6.2 在SQL Server XQuery中的

多文档查询 323

10.7 XML DML:更新XML列 323

10.7.1 xml.modify(‘insert…’) 324

10.7.2 xml.modify(‘delete…’) 327

10.7.3 xml.modify

(‘replace value of…’) 327

10.7.4 通用结论和最佳实践 327

10.8 在SQL Server内使用XQuery的

一些特殊考虑 328

10.8.1 XML Schema和SQL Server

2005 XQuery 328

10.8.2 在XQuery中XML索引的

用法 329

小结 331

第11章 SQL Server Service

Broker 332

11.1 消息处理应用程序 332

11.2 消息处理 339

11.3 业务事务 343

11.3.1 服务程序 345

11.3.2 会话 349

11.3.3 会话组 352

11.3.4 消息类型 357

11.3.5 约定 360

11.3.6 SEND语句和消息类型 362

11.3.7 循环处理 364

11.3.8 毒药消息 368

11.3.9 补偿 369

11.3.10 分布式 370

小结 382

第12章 作为Web服务平台的 SQL

Server 2005 383

12.1 混合使用数据库和Web服务 383

12.1.1 HTTP端点声明 384

12.1.2 CREATE ENDPOINT

语句 388

12.1.3 端点URL 389

12.1.4 端点状态 390

12.1.5 端点元数据 390

12.1.6 Web方法 391

12.1.7 Web服务定义语言 395

12.1.8 XML命名空间 417

12.1.9 生成WSDL 418

12.1.10 Web服务中的存储过程 426

12.1.11 SQL批处理 432

12.1.12 其他特征 436

12.1.13 SQLXML 4.0与

SQL Server 2005 437

小结 445

第13章 SQL Server 2005与

客户端 447

13.1 SQL本地客户端 447

13.2 新数据类型和数据类型兼容

模式 449

13.3 用户自定义类型和关系数据

访问API 450

13.4 在ADO.NET中使用

.NET Framework UDT 450

13.5 从DataReader中获取UDT 451

13.6 在ODBC、OLE DB和ADO客户端

中使用.NETFramework UDT 456

13.7 在客户端支持XML数据类型 458

13.7.1 在ADO.NET中使用XML

数据类型 458

13.7.2 把XML数据当作XML或

字符串返回 460

13.7.3 文档、文档片断和FOR

XML支持 461

13.7.4 在经典ADO中使用XML

数据类型 464

13.8 在客户端支持大值数据类型 465

13.9 查询通知支持 468

13.9.1 SQL Server 2005中的

查询通知 469

13.9.2 在OLE DB和ODBC中

使用查询通知 471

13.9.3 向最终用户或缓存分发

通知 472

13.9.4 从数据库客户端使用查询

通知 474

13.9.5 使用SqlDependency 474

13.9.6 使用SqlNotification

Request 476

13.9.7 在ASP.NET中使用

SqlCacheDependency 478

13.9.8 主动通知 479

13.9.9 什么时候不该使用通知 480

13.10 多活动结果集 480

13.10.1 在ADO.NET 2.0 中使用

MARS 482

13.10.2 SQL本地客户端中的

MARS 485

13.11 ADO.NET中新的事务和隔离

特性 485

13.11.1 使用新的隔离级别 485

13.11.2 可升级、声明性事务 486

13.12 SQL Server 2005登录相关的

改变 488

13.12.1 修改密码支持 488

13.12.2 故障转移支持 489

13.12.3 加密支持 490

13.13 对比存储过程的客户端和

服务器端模型 491

小结 491

第14章 ADO.NET 2.0和SqlClient 492

14.1 使用ADO.NET 2.0基类和

工厂进行泛型编程 492

14.2 提供者工厂 495

14.3 指定配置信息 497

14.4 枚举数据源和构造连接字符串 498

14.5 泛型编程的其他注意事项 500

14.6 ADO.NET 2.0中的架构 501

14.6.1 不管怎样,

谁需要元数据呢 502

14.6.2 可以使用哪些元数据 503

14.6.3 定制和扩展元数据 506

14.6.4 用户定制 507

14.7 跟踪数据访问 509

14.7.1 安装数据跟踪 509

14.7.2 运行跟踪 511

14.7.3 把结果收集成CSV文件 511

14.7.4 阅读跟踪输出 512

14.7.5 用户数据和ADO.NET

跟踪 512

14.7.6 配置对哪些应用程序进行

跟踪 514

14.7.7 使用跟踪来调试一个参数

绑定问题 515

14.7.8 深入数据跟踪 516

14.7.9 什么是ETW 517

14.8 异步支持 517

14.9 SqlClient中的批量导入 521

14.10 客户端统计 523

14.11 .NET Framework 2.0 DataSet和

SqlDataAdapter增强 525

小结 527

第15章 SQL Server管理对象 529

15.1 简介 529

15.1.1 为什么使用SMO 531

15.1.2 ADO.NET与SMO的

对比 533

15.2 对象模型 534

15.3 SMO项目 536

15.4 连接 539

15.4.1 默认的Windows认证

连接 540

15.4.2 使用Runas 541

15.4.3 自动连接 541

15.4.4 仿冒其他Windows身份 542

15.4.5 SQL Server登录 543

15.4.6 修改SQL Server

登录密码 544

15.4.7 连接管理 545

15.5 Server 546

15.6 SMO对象 547

15.6.1 对象标识和URN 547

15.6.2 GetSmoObject 549

15.6.3 URN对象获取限制 550

15.6.4 SMO 对象模型 551

15.6.5 SMO属性 552

15.6.6 浏览SMO父对象 554

15.6.7 SMO状态 555

15.7 创建、修改和删除 555

15.8 脚本 559

15.9 配置管理 565

小结 566

第16章 通知服务 567

16.1 什么是SQL Server通知服务 567

16.2 通知应用程序 568

16.3 SQL Server通知服务的组件 570

16.4 通知应用程序设计模式 572

16.5 通知服务发送特性 573

16.6 通知服务使用的术语 573

16.7 设计、编码以及生成通知服务

应用程序 574

16.7.1 计划步骤 574

16.7.2 编码步骤 575

16.7.3 应用程序生成步骤 575

16.8 一个示例通知服务应用程序 575

16.9 实例和应用程序配置文件 576

16.9.1 实例配置文件 576

16.9.2 应用程序定义文件 580

16.9.3 NSControl 582

16.10 事件 584

16.10.1 事件类型 584

16.10.2 事件存储过程 587

16.10.3 事件提供者 589

16.10.4 编目 592

16.11 订阅者和订阅 593

16.11.1 订阅类型 594

16.11.2 订阅者 595

16.11.3 订阅 597

16.12 通知 599

16.13 格式化器和分发器 602

16.14 发送 603

16.14.1 发送协议 604

16.14.2 定制 606

小结 606

第17章 结语:面向服务的数据库

应用程序 607

17.1 许多新特性:怎样使用它们 607

17.2 数据模型、编程和SQL Server 607

17.3 任一层面的任一功能 608

17.4 什么才是最佳实践 609

17.5 朝着面向服务的数据库体系结构

迈进 615

17.6 数据库作为平台的一部分 617

附录A .NET Framework 101 618

附录B SQL Server Management

Studio 636

附录C Visual Studio 2005集成:

SQL Server项目 654