SQL Server 2000Reporting Services 是实现企业级共享数据库的最新产品,在各种规模的公司的信息共享方面有着广泛的应用。
本书从Reporting Services的商业应用需求出发,由浅入深地介绍了Reporting Services安装和用法,从简单的制表方法,到跨媒体报表、报表管理和分发,以及企业数据共享中的高级主题,几乎涵盖了Reporting Services的各个方面。书中针对公司商业问题的设计的应用实例,可以让读者在与开发环境的交互式学习中,切实掌握在实践中必需的知识和技能。
本书的叙述与实例贴近现实,生动活泼,为各种类型的公司的数据库开发人员和管理人员,以及需要使用相关功能的人员提供了很好的技术参考。
目 录
第1章 SQL Server 2005环境
与工具1
1.1 SQL Server 2005工具2
1.1.1 SQL Server Configuration Manager3
1.1.2 SQL Server Management Studio6
1.1.3 SQLCMD实用程序10
1.1.4 SQL Server Profiler11
1.1.5 帮助文档和SQL Server Books Online11
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…End72
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 递归CTE206
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 After触发器的物理设计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和Print252
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存储过程的结构294
12.2 从CLR过程中访问数据295
12.3 使用存储过程的基本操作296
12.3.1 返回值296
12.3.2 连接上下文297
12.3.3 返回结果298
12.3.4 返回自定义记录300
12.3.5 CLR存储过程中的
参数302
12.4 带正规ADO.NET对象的操作302
12.4.1 SqlCommand302
12.4.2 SqlDataReader304
12.5 管理LOB参数305
第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 UDT346
14.1.3 使用CLR用户自定义类型346
14.1.4 跨数据库的用户自定义类型353
14.2 是否使用UDT354
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 GUID405
15.7 带Min()或Max()函数的循环407
15.8 带sp_MSForEachTable和sp_MSForEachDb 的循环408
15.9 特性管理410
第16章 调试413
16.1 什么是bug414
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 Profiler429
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 Explorer445
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 Intergration Services(SSIS)包531
21.6 运行DTS 包531
21.7 在DTS包中实现循环532
21.8 与NT注册表交互作用533
21.8.1 xp_regread534
21.8.2 xp_regwrite534
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 Mail544
21.10.2 配置Database Mail544
21.10.3 发送电子邮件546
21.10.4 检查状态547
21.11 将存储过程作为Web服务提供547
附录A 命名约定549
附录B 存储过程编译、存储和重用559
附录C SQL Server 2005中的数据类型571
无封面