《Microsoft SQL Server 2005 T-SQL& NET高级编程 第3版》PDF下载

  • 购买积分:17 如何计算积分?
  • 作  者:(美)Dejan Sunderic著;曹俊,姜龙芳译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2008
  • ISBN:9787302173403
  • 页数:574 页
图书介绍:本书介绍了开发复杂的存储过程所需掌握的基本概念、技术和最佳实践,教会读者将有效的Transact-SQL存储过程结合到客户端与中间代码中的方法。

第1章SQL Server 2005环境与工具 1

1.1 SQL Server 2005工具 2

1.1.1 SQL Server Configuration Manager 3

1.1.2 SQL Server Management Studio 6

1.1.3 SQLCMD实用程序 10

1.1.4 SQL Server Profiler 11

1.1.5帮助文档和SQL Server Books Online 11

1.2 Management Studio中的基本操作 12

1.2.1存储结构的定义 12

1.2.2 Management Studio中存储过程的执行 12

1.2.3编辑存储过程 15

1.2.4创建存储过程 15

1.2.5在Query窗口中编辑存储过程 17

1.2.6语法错误 19

1.2.7查看和编辑表 21

1.2.8修改表结构 23

第2章 存储过程设计的一些概念 25

2.1存储过程的剖析 26

2.1.1组成部分 26

2.1.2功能 29

2.1.3语法 35

2.2存储过程的类型 37

2.3管理存储过程 38

2.3.1列出存储过程 38

2.3.2查看存储过程的代码 39

2.3.3重命名存储过程 40

2.3.4删除存储过程 41

2.3.5列出被依赖和依赖对象 41

2.4存储过程在数据库应用程序开发中的作用 43

2.4.1增强数据完整性 43

2.4.2复杂业务规则和约束的一致实现 44

2.4.3模块化设计 44

2.4.4可维护性 44

2.4.5降低的网络通信量 44

2.4.6较快的执行 45

2.4.7安全性的增强 45

第3章 基本Transact-SQL编程结构 47

3.1 T-SQL标识符 48

3.2数据库对象限定符 49

3.3数据类型 51

3.3.1字符串型 52

3.3.2 Unicode字符串型 53

3.3.3日期和时间型 54

3.3.4整型 55

3.3.5近似数值型 56

3.3.6精确数值型 56

3.3.7货币型 57

3.3.8二进制型 57

3.3.9特殊类型 58

3.3.10 Transact-SQL用户自定义数据类型 61

3.4变量 62

3.4.1局部变量 62

3.4.2全局变量 66

3.4.3表变量 68

3.5流程控制语句 69

3.5.1注释 70

3.5.2语句块:Begin*End 72

3.5.3条件执行:If语句 73

3.5.4循环:While语句 77

3.5.5无条件执行:GoTo语句 79

3.5.6调度执行:WaitFor语句 80

3.6游标 81

3.6.1 Transact-SQL游标 82

3.6.2与游标相关的语句和函数 85

3.6.3使用游标的问题 86

3.6.4游标的正确用法 87

第4章 函数 89

4.1函数的用法 90

4.1.1用函数来选择和赋值 90

4.1.2作为选择条件的一部分 91

4.1.3在表达式中使用函数 91

4.1.4作为Check和 Default约束 91

4.1.5取代表 92

4.2函数的类型 93

4.2.1标量函数 93

4.2.2行集函数 120

第5章 复合Transact-SQL结构:批处理、脚本和事务 127

5.1批处理 128

5.1.1使用批处理 130

5.1.2批处理与错误 130

5.1.3 DDL批处理 133

5.1.4自给自足的内容 133

5.2脚本 134

5.3事务 137

5.3.1自动提交事务 137

5.3.2显式事务 138

5.5.3隐式事务 140

5.3.4事务处理体系结构 140

5.3.5嵌套事务 141

5.3.6命名事务 145

5.3.7保存点 146

5.3.8加锁 148

5.3.9分布式事务 152

5.3.10与事务相关的典型问题 154

第6章 错误处理 157

6.1 Raiserror语句 158

6.2使用错误处理 160

6.3添加错误处理代码的原因 160

6.4基于@@Error的错误处理 161

6.5 Try-Catch语句 163

6.5.1捕获的错误类型 164

6.5.2 Catch块的函数 166

6.5.3带显式事务的Try-Catch语句 167

6.5.4死锁重试 170

6.5.5 Try-Catch语句嵌套 174

6.5.6错误处理体系结构:使用Try-Catch语句 174

6.6 Xact Abort选项的设置 175

6.6.1错误处理体系结构:基于Set Xact Abort On设置 176

6.6.2错误处理体系结构:设置Xact Abort且事物嵌套为零 180

第7章 特殊存储过程类型 187

7.1用户自定义存储过程 188

7.2系统存储过程 188

7.3 CLR存储过程 189

7.4扩展存储过程 190

7.4.1扩展存储过程的设计 190

7.4.2注册扩展存储过程 194

7.5临时存储过程 196

7.6全局临时存储过程 197

7.7远程存储过程 197

第8章 视图 199

8.1标准SQL视图的设计 200

8.1.1语法 201

8.1.2 Enterprise Manager中的视图设计 202

8.1.3安全性 202

8.1.4执行计划中的标准SQL视图 203

8.1.5视图的限制 203

8.1.6用视图编辑数据 204

8.2动态视图 205

8.3临时视图——通用表表达式 205

8.3.1非递归CTE的限制 206

8.3.2递归CTE 206

8.4 INFORMATION SCHEMA视图 208

8.5索引视图 209

8.5.1索引视图限制 209

8.5.2执行计划中的索引视图 210

8.5.3视图上的非群集索引 210

8.5.4性能影响 211

8.6分区视图 211

8.6.1水平和垂直分区 211

8.6.2分布式分区视图 213

8.6.3分布式分区视图的执行计划 218

8.6.4可更新的分布式分区视图 221

8.6.5分布式系统的稳定性和性能 222

8.6.6简单的联合服务器 223

8.7使用SQL视图 223

8.7.1导出和导入 223

8.7.2安全性实现 223

8.7.3降低复杂性 224

8.7.4性能提升 226

第9章 触发性 227

9.1 DML触发器 228

9.1.1 Afterer触发器的物理设计 228

9.1.2插入和删除虚拟表 229

9.1.3触发器激活条件 231

9.1.4 After触发器的完整语法 232

9.1.5处理多条记录上的修改 235

9.1.6嵌套触发和递归触发 236

9.1.7 After触发器限制 236

9.1.8 Instead-of触发器 238

9.1.9视图上的触发器 239

9.1.10 DML触发器的执行次序 241

9.2 DDL触发器 242

9.2.1 DDL触发器的作用域和事件 243

9.2.2 EventData()函数 244

9.2.3 DDL触发器的语法 245

9.3管理触发器 246

9.3.1在Management Studio中管理DML触发器 246

9.3.2在Management Studio中管理DDL触发器 247

9.3.3用Transact-SQL语句管理触发器 247

9.4触发器的设计建议 250

9.4.1尽可能快地退出触发器 250

9.4.2简化触发器的代码 251

9.4.3按功能实现触发器 252

9.4.4不要在触发器内使用Select和Print 252

9.4.5根本不要使用触发器 252

9.5触发器中的事务管理 252

9.6使用触发器 253

9.6.1级联删除 254

9.6.2聚集 257

9.6.3增强不同服务器或数据库上的对象的模式完整性 259

第10章 用户自定义函数 263

10.1标量用户自定义函数的设计 264

10.1.1副作用 265

10.1.2内置函数的使用 266

10.1.3加密 266

10.1.4模式绑定 266

10.2表*值用户自定义函数 267

10.3在Management Studio中管理用户自定义函数 271

第11章SQL Server 2005中的*NET编程基础 273

11.1非托管和托管代码 274

11.2公共语言运行库 274

11.3 SQL Server 2005中的CLR集成 275

11.3.1优缺点 276

11.3.2支持和不支持的功能 276

11.3.3所需最小空间 277

11.4 Visual Studio 2005中CLR数据库对象的开发、部署和使用 278

11.5不使用Visual Studio 2005时CLR数据库对象的开发和部署 281

11.5.1开发代码 282

11.5.2编译程序 282

11.5.3向SQL Server数据库中加载程序集 284

11.5.4创建SQLCLR数据库对象 285

11.6为程序集和CLR数据库对象编目录 286

11.6.1为程序集编目录 286

11.6.2为过程编目录 287

11.6.3 NET Framework的版本 289

第12章CLR存储过程开发基础 291

12.1 CLR存储过程的结构 292

12.2从CLR过程中访问数据 293

12.3使用存储过程的基本操作 294

12.3.1返回值 294

12.3.2连接上下文 295

12.3.3返回结果 296

12.3.4返回自定义记录 298

12.3.5 CLR存储过程中的参数 300

12.4带正规ADO.NET对象的操作 301

12.4.1 SqlCommand 301

12.4.2 SqlDataReader 303

12.5管理LOB参数 304

第13章CLR函数与触发器 311

13.1 CLR函数 312

13.1.1标量*值CLR函数 312

13.1.2 SqlFunction属性 314

13.1.3表*值CLR函数 316

13.2 CLR触发器 327

13.2.1支持的特性 327

13.2.2 DML触发器的创建 327

13.2.3 DDL触发器的创建 332

第14章CLR数据库对象高级主题 337

14.1 CLR用户自定义类型(UDT) 338

14.1.1托管UDT的结构 339

14.1.2不使用Visual Studio 2005部署CLR UDT 346

14.1.3使用CLR用户自定义类型 346

14.1.4跨数据库的用户自定义类型 353

14.2是否使用UDT 354

14.3用户自定义聚合CLR函数 355

14.4 CLR代码中的事务 365

14.4.1使用TransactionScope类 365

14.4.2事务选项 367

14.4.3分布式事务 368

14.4.4显式事务 370

14.4.5新事务泛型的优点 372

14.5是否设计CLR(设计与性能考虑) 372

14.6警告 373

第15章 高级存储过程编程 375

15.1动态构造的查询 376

15.1.1执行字符串 376

15.1.2通过表单查询 377

15.1.3数据脚本生成器 379

15.1.4使用sp executesql存储过程 384

15.1.5安全隐患 385

15.2使用timestamp值的乐观锁 388

15.2.1 timestamp数据类型 389

15.2.2 TSEqual()函数 391

15.3全文本搜索和索引 392

15.4嵌套存储过程 393

15.4.1用临时表向嵌套存储过程传递记录集 393

15.4.2用游标向嵌套存储过程传递记录集 396

15.4.3如何处理存储过程的结果集 397

15.5使用标识值 403

15.5.1标准问题和答案 403

15.5.2标识值与触发器 404

15.6 GUID 405

15.7带Min()或Max()函数的循环 407

15.8带sp_MSForEachTable和sp_MSForEachDb的循环 408

15.9特性管理 410

第16章 调试 413

16.1什么是bug 414

16.2调试过程 414

16.2.1标识阶段 414

16.2.2解决阶段 416

16.3调试工具与技术 417

16.4调试CLR数据库对象 421

16.5简单的调试器 424

16.5.1生产环境中的执行 427

16.5.2嵌套存储过程 428

16.5.3输出子句 428

16.6 SQL Profiler 429

16.7典型错误 433

16.7.1处理空值 433

16.7.2从结果集中为变量赋值 434

16.7.3没有记录受影响 434

16.7.4错误的大小或数据类型 434

16.7.5默认长度 435

16.7.6触发器的回退 435

16.7.7警告和较低优先级的错误 435

16.7.8返回代码与Raiserror语句的使用 436

16.7.9嵌套注释 436

16.7.10延迟名称解析 436

16.7.11游标 437

16.7.12过分自信 437

第17章 源代码管理 439

17.1 Microsoft Visual SourceSafe介绍 440

17.2管理Visual SourceSafe数据库 441

17.3在Visual Studio.NET中向Visual SourceSafe添加数据库对象 442

17.4在Visual Studio.NET中管理Create脚本 444

17.5 Visual SourceSafe Explorer 445

17.5.1历史 446

17.5.2标签与版本 448

17.6向Visual SourceSafe添加数据库对象:传统方法 449

17.6.1用Script Wizard创建脚本 449

17.6.2用TbDbScript创建脚本 451

17.6.3用TbDir2Vss.vbs向Visual SourceSafe中添加脚本 453

第18章 数据库部署 455

18.1整个数据库的部署:传统方法 456

18.1.1在Transact-SQL中附着与分离数据库 457

18.1.2在Management Studio中附着和分离 458

18.1.3备份与恢复 459

18.1.4潜在的问题 459

18.2单个对象的部署 460

18.2.1部署脚本:传统方法 460

18.2.2脚本化数据:传统方法 460

18.2.3在Visual Studio NET中脚本化数据 461

18.2.4部署脚本:传统方法 462

18.2.5在Visual Studio.NET中部署Create脚本 469

18.2.6递增的构件:传统方法 471

18.2.7 Visual Studio.NET中的递增的构件 472

第19章 安全 473

19.1安全体系结构 474

19.1.1身份验证与授权 474

19.1.2主体 474

19.1.3可保护对象 475

19.1.4访问级别 475

19.1.5角色 480

19.1.6所有权链 482

19.1.7交叉数据库拥有者链 482

19.1.8执行环境上下文的切换 483

19.2实现安全性 483

19.2.1身份验证模式的选择 483

19.2.2管理登录名 484

19.2.3授予数据库访问权限 486

19.2.4赋予权限 488

19.3登录名与用户名的同步 490

19.4用存储过程、用户自定义函数和视图管理应用程序安全 493

19.5用代理用户管理应用程序安全 496

19.6用应用程序角色管理应用程序安全 496

第20章Web搜索引擎的存储过程 499

20.1环境特征 500

20.2一个简单的解决方案 500

20.3缺点 501

20.4可用的解决方案 502

20.4.1结果分割 503

20.4.2快速查询 511

20.4.3高级查询 515

20.4.4新的解决方案:行版本 518

第21章SQL Server环境的交互作用 525

21.1运行程序 526

21.2运行Windows脚本文件 527

21.3 OLE Automation/COM对象的执行 527

21.4数据类型转换 530

21.5 运行SQL Server 2005 IntergationServices(SSIS)包 531

21.6运行DTS包 531

21.7在DTS包中实现循环 532

21.8与NT注册表交互作用 533

21.8.1 xp regread 534

21.8.2 xp regwrite 534

21.9作业 535

21.9.1作业管理 535

21.9.2 Job Scheduler的替换方法 539

21.9.3维护作业的存储过程 540

21.9.4操作员和警报 543

21.10电子邮件 543

21.10.1 Database Mail 544

21.10.2配置Database Mail 544

21.10.3发送电子邮件 546

21.10.4检查状态 547

21.11将存储过程作为Web服务提供 547

附录A命名约定 549

附录B存储过程编译、存储和重用 559

附录C SQL Server 2005中的数据类型 571