书籍详情

SQL Server 2005宝典

SQL Server 2005宝典

作者:(美)尼尔森(Nielsen,P.) 著,赵子鹏,袁国忠,乔健 译

出版社:人民邮电出版社

出版时间:2008-06-01

ISBN:9787115174864

定价:¥128.00

购买这本书可以去
内容简介
  本书以理论和实践相结合的方式,通过大量示例全面而详尽地介绍了SQL Server 2005,涵盖数据库设计、数据操作、开发、管理、优化和商业智能等主题。作者Paul Nielsen是数据架构师、数据库开发人员和培训师,本书是其在这3个领域的经验结晶。全书由七部分组成,第一部分介绍了SQL Server 2005基础知识,包括信息体系结构原则、关系数据库建模、SQL Server 2005的体系结构、SQL Server 2005的安装以及Management Studio的用法。第二部分讨论如何操作数据,包括查询流程、表达式、标量函数、连接、子查询、公用表表达式、聚合、全文搜索、视图、分布式查询和数据修改等主题。第三部分讨论数据库开发,包括物理架构的设计、T-SQL编程、大容量操作、游标,用户定义函数、存储过程、触发器、数据抽象层、CLR集成、ADO.NET 2.0编程、SQL Server Everywhere开发、Web服务等。第四部分阐述数据库管理,涵盖配置、数据库传输、恢复计划、数据库维护、数据复制、安全性等主题。第五部分探讨商业智能,包括使用Integration Services实现ETL、使用Analysis Services进行数据挖掘、使用Reporting Services制作和管理报表以及MDX查询编程等。第六部分阐述数据库优化,包括性能的测量、查询分析和索引优化、管理事务、锁定和阻塞、提高数据库的可用性和伸缩性等主题。第七部分为附录。无论您是数据库开发人员还是数据库管理员,无论您是新手还是有一定的数据库从业经验,阅读本书后都将受益匪浅。
作者简介
  Paul Nielsen是经验丰富的数据库开发人员和Microsoft SQL Server MVP,还是作者和培训师,他主要致力于数据架构和Microsoft SQL Server技术。除拥有多个证书外,他还是Microsoft官方课程Tuning and Optimizing Queries using Microsoft SQL Server 2005的Subject Matter Expert(SME)。Paul从1982年起就从事以数据为中心的解决方案的开发工作, 担任过Compassion International的企业数据架构师,LearningTree的SQLServer讲师、一家数据库杂志的技术编辑,还在美国海军的潜艇部队担任过数据系统技术员。他还是SQL Server专业协会(Professional Association for SQL Server,PASS)的董事会成员,是科罗拉多SQL Server用户组的活跃分子,并负责组织科罗拉多PASS Camp。在业余时间,Paul喜欢潜水、玩吉他、徒步/骑自行车翻越科罗拉多的Front Range山峰。Paul定期地开办有关SQLServer开发和数据架构方面的讲座,其中包括流行的课程Advanced Design and Optimization。更详细的信息请访问WWW.SQLServerBible.com。
目录
第1部分 SQL Server 2005基础
第1章 信息体系结构原则 3
1.1 复杂性和简单性 4
1.1.1 复杂性 4
1.1.2 简单性 4
1.2 有用性目标 5
1.2.1 设计的适宜性 5
1.2.2 数据存储配置 6
1.2.3 主数据存储的设计方法 7
1.3 数据完整性 9
1.3.1 实体完整性 10
1.3.2 域完整性 10
1.3.3 引用完整性 10
1.3.4 用户定义的完整性 10
1.3.5 事务完整性 11
1.3.6 事务缺陷 11
1.3.7 隔离级别 12
1.3.8 空值 13
1.4 性能 13
1.4.1 设计 14
1.4.2 基于集合的处理 14
1.4.3 索引 14
1.4.4 分区 15
1.4.5 缓存 15
1.5 可用性 15
1.5.1 冗余 16
1.5.2 恢复 16
1.6 可扩展性 16
1.6.1 抽象层 16
1.6.2 归一化 17
1.7 安全性 17
1.7.1 限制访问 17
1.7.2 信息所有权 17
1.7.3 审核跟踪 18
1.8 优化理论和SQL Server 18
1.8.1 架构设计 18
1.8.2 查询 19
1.8.3 索引 19
1.8.4 并发性 19
1.8.5 高级伸缩性 20
1.9 总结 20
第2章 关系数据库建模 21
2.1 模拟现实 22
2.2 可见实体 22
2.2.1 每个元组(行)都是独立的 23
2.2.2 主键 23
2.2.3 表、行和列 23
2.3 识别多个实体 24
2.3.1 多个对象 24
2.3.2 对象之间的关系 24
2.3.3 组织对象 25
2.3.4 一致的查找值 25
2.3.5 复杂对象 25
2.4 关系模式 25
2.4.1 辅助实体和外键 26
2.4.2 关系的基数 26
2.4.3 关系的可选性 27
2.4.4 绘制数据模型关系图 27
2.4.5 一对多关系 28
2.4.6 一对一关系 28
2.4.7 超类/子类关系 28
2.4.8 多对多关系 29
2.4.9 类别实体 30
2.4.10 自反关系 30
2.5 规范化 32
2.5.1 实体/属性的设计原则 32
2.5.2 范式 32
2.5.3 简单性和规范化 33
2.5.4 第一范式 33
2.5.5 第二范式 34
2.5.6 第三范式 35
2.5.7 BCNF范式 36
2.5.8 第四范式 36
2.5.9 第五范式 36
2.6 关系代数 37
2.7 总结 37
第3章 探索SQL Server 2005的体系结构 39
3.1 数据访问体系结构 40
3.1.1 客户/服务器数据库模型 41
3.1.2 N层设计 42
3.1.3 面向服务的体系结构 43
3.2 SQL Server中的服务 43
3.2.1 关系引擎 43
3.2.2 Transact-SQL 44
3.2.3 Visual Studio和CLR 45
3.2.4 Service Broker 45
3.2.5 复制服务 46
3.2.6 全文搜索服务 46
3.2.7 Notification Services 46
3.2.8 服务器管理对象 47
3.2.9 SQL Server代理 47
3.2.10 分布式事务协调器(DTC) 47
3.2.11 SQL Mail 47
3.3 Business Intelligence Services 47
3.3.1 Integration Services 48
3.3.2 Reporting Services 48
3.3.3 Analysis Services 49
3.4 SQL Server 2005版本 50
3.4.1 企业(开发)版 50
3.4.2 标准版 50
3.4.3 工作组版 51
3.4.4 SQL Server速成版 51
3.4.5 SQL Server Everywhere版 52
3.5 SQL Server的工具和组件 52
3.5.1 SQL Server Management Studio 52
3.5.2 SQL Server Configuration Manager 53
3.5.3 外围应用配置器 53
3.5.4 Business Intelligence Development Studio 53
3.5.5 SQL集成帮助 53
3.5.6 SQL Profiler 54
3.5.7 性能监视器 54
3.5.8 数据库优化顾问 54
3.5.9 命令行实用程序:SQLCmd、Bulk Copy 54
3.6 SQL Server 2005功能包 55
3.7 AdventureWorks 55
3.8 探索元数据 55
3.8.1 系统数据库 56
3.8.2 元数据视图 56
3.9 总结 56
第4章 安装SQL Server 2005 57
4.1 制定安装计划 57
4.1.1 操作系统 57
4.1.2 安全账户 57
4.1.3 身份验证模式 59
4.1.4 服务器实例 59
4.2 有关硬件的建议 60
4.2.1 使用专用服务器 60
4.2.2 使用大量内存 60
4.2.3 使用多个CPU 61
4.2.4 磁盘驱动器子系统 61
4.2.5 RAID磁盘子系统 62
4.2.6 网络性能 62
4.3 实施安装 62
4.3.1 值守安装 62
4.3.2 非值守安装 64
4.3.3 远程安装 64
4.3.4 在群集环境中安装 64
4.3.5 安装多个实例 65
4.3.6 测试安装 65
4.4 升级以前的版本 65
4.4.1 SQL Server 2005升级顾问 65
4.4.2 从SQL Server 2000升级到SQL Server 2005 67
4.5 迁移到SQL Server 67
4.5.1 迁移助手 67
4.5.2 评估 68
4.5.3 架构转换 68
4.5.4 数据迁移 68
4.5.5 业务逻辑转换 68
4.5.6 验证和集成 70
4.6 配置SQL Server外围应用 70
4.6.1 外围应用配置器 70
4.6.2 命令行实用程序 72
4.7 卸载SQL Server 73
4.8 总结 73
第5章 客户端软件的连接性 74
5.1 启用服务器连接 74
5.1.1 服务器配置管理器 74
5.1.2 SQL Native Client连接(SNAC) 75
5.2 SQL Native Client的特性 75
5.2.1 需求 76
5.2.2 数据库镜像 76
5.2.3 异步操作 77
5.2.4 多个活动结果集(MARS) 77
5.2.5 XML数据类型 77
5.2.6 用户定义的类型 77
5.2.7 大型数据类型 77
5.2.8 处理过期的密码 78
5.2.9 快照隔离 78
5.3 总结 78
第6章 使用Management Studio 79
6.1 组织界面 80
6.1.1 窗口布局 80
6.1.2 上下文菜单 82
6.1.3 摘要窗口 82
6.2 已注册的服务器 82
6.3 对象资源管理器 83
6.3.1 在对象树中导航 83
6.3.2 在对象资源管理器中进行筛选 84
6.3.3 表设计器 85
6.3.4 建立数据库关系图 86
6.3.5 查询设计器 87
6.4 使用查询编辑器 88
6.4.1 连接到服务器 88
6.4.2 打开.sql文件 88
6.4.3 执行SQL批处理 89
6.4.4 快捷键和书签 89
6.4.5 查看查询执行计划 90
6.5 使用解决方案资源管理器 90
6.6 模板简介 91
6.7 总结 91
第2部分 使用Select操作数据
第7章 理解基本的查询流程 95
7.1 理解查询流程 95
7.1.1 查询语句的语法流程 96
7.1.2 查询语句的图形视图 96
7.1.3 查询语句的逻辑流程 96
7.1.4 查询语句的物理流程 98
7.2 指定数据源的From子句 98
7.2.1 可能的数据源 98
7.2.2 范围变量 99
7.2.3 [Table Name] 99
7.2.4 由四部分组成的表名 99
7.3 Where条件 100
7.3.1 使用查找条件Between 101
7.3.2 使用in查找条件 103
7.3.3 使用Like查找条件 104
7.3.4 多个Where条件 105
7.3.5 Select...Where 106
7.4 对结果集排序 107
7.4.1 使用列名指定顺序 108
7.4.2 使用表达式指定排序顺序 108
7.4.3 使用列别名指定顺序 109
7.4.4 使用列序号指定顺序 109
7.4.5 Order by与排序规则 110
7.5 Select Distinct 111
7.6 排名 112
7.6.1 Top 112
7.6.2 With Ties选项 114
7.7 总结 114
第8章 使用表达式和标量函数 115
8.1 创建表达式 115
8.1.1 运算符 116
8.1.2 按位运算符 117
8.2 Case表达式 119
8.2.1 简单Case 119
8.2.2 布尔Case 120
8.3 使用空值 121
8.3.1 检测空值 121
8.3.2 处理空值 122
8.4 标量函数 126
8.4.1 用户信息函数 127
8.4.2 日期-时间函数 127
8.4.3 字符串函数 129
8.4.4 Soundex函数 132
8.4.5 数据类型转换函数 135
8.4.6 服务器环境信息 138
8.5 总结 138
第9章 使用联接和联合合并数据 139
9.1 使用联接 140
9.2 内联接(Inner Join) 141
9.2.1 在SQL代码中建立内联接 141
9.2.2 返回的行数 142
9.2.3 ANSI SQL 89联接 143
9.2.4 多表联接 144
9.3 外联接 145
9.3.1 外联接与可选的外键 147
9.3.2 全外联接 148
9.3.3 在外联接中设置条件 150
9.4 自联接 151
9.5 交叉(无限制)联接 152
9.6 特殊联接(Exotic Joins) 154
9.6.1 ((theta)联接 154
9.6.2 多条件联接 154
9.6.3 非键联接 154
9.7 差集(Set Difference) 155
9.8 使用联合 158
9.8.1 交联合 158
9.8.2 差联合 159
9.9 总结 159
第10章 使用子查询和CTE提供数据 161
10.1 方法和位置 161
10.2 简单子查询 162
10.2.1 公用表表达式 163
10.2.2 使用标量子查询 164
10.2.3 将子查询用作列表 165
10.2.4 将子查询用作表 169
10.3 相关子查询 170
10.4 关系除 174
10.4.1 带余数的关系除 175
10.4.2 关系整除 177
10.5 总结 178
第11章 汇总数据 179
11.1 简单聚合 179
11.1.1 基本聚合 180
11.1.2 统计学初步 181
11.2 在结果集中分组 182
11.2.1 简单分组 183
11.2.2 聚合查询 183
11.3 计算总计 187
11.3.1 计算小计 187
11.3.2 多维数据集查询 188
11.3.3 计算总计 189
11.4 创建交叉表查询 191
11.4.1 固定列交叉表查询 191
11.4.2 动态交叉表查询 194
11.5 总结 195
第12章 导航层次型数据 196
12.1 邻接表架构模式 196
12.1.1 基本的邻接表模式 197
12.1.2 邻接表变种 197
12.2 邻接表导航 200
12.2.1 使用标准select语句 200
12.2.2 使用递归游标 201
12.2.3 使用基于集合的解决方案 203
12.2.4 使用用户定义函数 204
12.2.5 使用递归公用表表达式 205
12.3 总结 206
第13章 使用全文搜索 207
13.1 配置全文搜索目录 208
13.1.1 使用向导创建全文搜索目录 208
13.1.2 使用T-SQL代码创建目录 210
13.1.3 在全文索引中填充数据 211
13.1.4 使用Management Studio来维护全文目录 212
13.1.5 使用T-SQL代码维护目录 212
13.1.6 干扰词文件 213
13.2 单词搜索 214
13.2.1 Contains函数 214
13.2.2 ContainsTable 215
13.3 高级搜索选项 216
13.3.1 多单词搜索 216
13.3.2 使用通配符搜索 217
13.3.3 短语搜索 218
13.3.4 邻近单词搜索 218
13.3.5 搜索单词的屈折变体 219
13.3.6 同义词搜索 219
13.3.7 使用可变的单词权重进行搜索 220
13.4 模糊搜索 221
13.4.1 Freetext 222
13.4.2 FreetextTable 222
13.5 为二进制对象建立索引 223
13.6 性能 224
13.7 总结 225
第14章 创建视图 226
14.1 为何使用视图 226
14.2 使用视图 227
14.2.1 使用Management Studio创建视图 228
14.2.2 使用DDL代码创建视图 229
14.2.3 Order By和视图 230
14.2.4 对视图的限制 231
14.2.5 执行视图 231
14.3 保护视图 231
14.3.1 保护数据 231
14.3.2 保护视图 233
14.4 通过视图进行更新 234
14.5 嵌套视图 235
14.6 使用同义词 237
14.7 总结 238
第15章 使用分布式查询 239
15.1 分布式查询的概念 239
15.2 访问本地SQL Server数据库 241
15.3 链接到外部数据源 241
15.3.1 使用Management Studio建立链接 241
15.3.2 使用T-SQL创建链接 244
15.3.3 链接非SQL Server数据源 246
15.4 开发分布式查询 248
15.4.1 分布式查询和Management Studio 248
15.4.2 分布式视图 249
15.4.3 本地-分布式查询 249
15.4.4 传递分布式查询 252
15.5 分布式事务 254
15.5.1 分布式事务处理协调器 254
15.5.2 开发分布式事务 255
15.5.3 监测分布式事务 256
15.6 总结 257
第16章 修改数据 258
16.1 插入数据 259
16.1.1 插入一行数据 260
16.1.2 插入select语句的结果集 262
16.1.3 插入存储过程的结果集 263
16.1.4 创建由默认值组成的行 264
16.1.5 插入数据时创建表 264
16.2 更新数据 267
16.2.1 更新单个表 267
16.2.2 进行全程搜索和替换 268
16.2.3 更新数据时引用多个表 268
16.3 删除数据 271
16.3.1 删除时引用多个表 272
16.3.2 级联删除 272
16.3.3 物理删除数据的替代方法 274
16.4 返回修改后的数据 274
16.4.1 返回插入的数据 275
16.4.2 返回更新后的数据 275
16.4.3 返回删除的数据 275
16.4.4 将返回的数据存储到表变量中 275
16.5 对数据修改的潜在限制 276
16.5.1 数据类型/长度限制 277
16.5.2 主键限制 277
16.5.3 外键限制 280
16.5.4 唯一索引限制 281
16.5.5 空值和默认值限制 281
16.5.6 check约束限制 282
16.5.7 instead of触发器限制 282
16.5.8 after触发器限制 283
16.5.9 计算列 284
16.5.10 不可更新视图导致的限制 284
16.5.11 使用with check option的视图导致的限制 285
16.5.12 安全性限制 286
16.6 总结 286
第3部分 SQL Server开发
第17章 实现数据库物理架构 289
17.1 设计数据库的物理架构 290
17.1.1 设计物理架构的方法 290
17.1.2 改进数据模式 290
17.1.3 规划性能 291
17.1.4 规划可扩展性 291
17.1.5 合理的逆规范化 291
17.2 创建数据库 292
17.2.1 DDL命令Create 292
17.2.2 数据库文件的概念 294
17.2.3 配置文件增长 294
17.2.4 使用多个文件 296
17.2.5 规划多个文件组 297
17.3 创建表 299
17.3.1 使用Management Studio设计表 299
17.3.2 使用SQL脚本 300
17.3.3 架构 301
17.3.4 表名与列名 301
17.3.5 文件组 302
17.4 创建键 303
17.4.1 主键 303
17.4.2 创建外键 306
17.5 创建用户数据列 310
17.5.1 列的数据类型 310
17.5.2 计算列 312
17.5.3 列约束和默认值 313
17.5.4 数据目录 316
17.6 DDL触发器 318
17.6.1 创建和修改DDL触发器 318
17.6.2 EventData() 319
17.6.3 启用和禁用DDL触发器 320
17.7 总结 320
第18章 Transact-SQL编程 321
18.1 Transact-SQL基础 322
18.1.1 T-SQL批处理 322
18.1.2 格式化T-SQL代码 323
18.1.3 调试T-SQL 324
18.2 变量 325
18.2.1 变量的默认值和作用域 325
18.2.2 使用Set和Select命令 326
18.2.3 条件Select 326
18.2.4 在SQL查询中使用变量 327
18.2.5 多赋值变量 327
18.3 流程控制 328
18.3.1 if 328
18.3.2 While 329
18.3.3 Goto 330
18.4 使用代码获取SQL Server信息 330
18.4.1 sp_help 330
18.4.2 全局变量 331
18.5 临时表和表变量 332
18.5.1 局部临时表 332
18.5.2 全局临时表 333
18.5.3 表变量 333
18.6 动态SQL 334
18.6.1 执行动态SQL 334
18.6.2 sp_excecuteSQL 335
18.6.3 开发动态SQL代码 335
18.7 错误处理 337
18.7.1 Try...Catch 337
18.7.2 遗留的全局变量@@Error 338
18.7.3 全局变量@@RowCount 339
18.7.4 Raiserror 339
18.7.5 Catch块 343
18.7.6 T-SQL致命错误 343
18.8 总结 344
第19章 执行大容量操作 345
19.1 大容量插入 346
19.1.1 大容量插入选项 347
19.1.2 BCP 347
19.2 总结 348
第20章 消灭游标 349
20.1 游标剖析 349
20.1.1 使用游标的5个步骤 350
20.1.2 管理游标 350
20.1.3 更新游标 351
20.1.4 游标的作用域 352
20.1.5 游标和事务 352
20.2 使用游标的策略 352
20.3 复杂逻辑的解决方案 353
20.3.1 逻辑代码 354
20.3.2 使用SQL-92游标和存储过程 355
20.3.3 使用快速只进游标和存储过程 356
20.3.4 使用快速只进游标和用户定义函数 357
20.3.5 使用更新游标和存储过程 357
20.3.6 使用更新查询和用户定义函数 358
20.3.7 使用多个查询 358
20.3.8 使用case表达式的查询 359
20.3.9 性能分析 360
20.4 逆规范化列表示例 361
20.5 总结 362
第21章 开发存储过程 363
21.1 管理存储过程 364
21.1.1 Create、Alter和Drop 364
21.1.2 返回记录集 364
21.1.3 编译存储过程 365
21.1.4 加密存储过程 365
21.1.5 系统存储过程 366
21.2 向存储过程传递数据 366
21.2.1 输入参数 366
21.2.2 参数的默认值 367
21.3 从存储过程返回数据 368
21.3.1 输出参数 368
21.3.2 使用Return命令 369
21.3.3 返回数据的途径及其适用范围 370
21.4 在查询中使用存储过程 371
21.5 执行远程存储过程 371
21.6 完整的存储过程 372
21.6.1 存储过程pGetPrice 372
21.6.2 存储过程pOrder_AddNew 374
21.6.3 存储过程pOrder_AddItem 376
21.6.4 添加订单 378
21.7 总结 379
第22章 创建用户定义函数 380
22.1 标量函数 381
22.1.1 创建标量函数 381
22.1.2 调用标量函数 383
22.1.3 创建架构绑定函数 383
22.2 内联表值函数 383
22.2.1 创建内联表值函数 384
22.2.2 调用内联表值函数 384
22.2.3 使用参数 385
22.2.4 相关用户定义函数 386
22.3 多语句表值函数 387
22.3.1 创建多语句表值函数 387
22.3.2 调用函数 388
22.4 总结 388
第23章 实现触发器 389
23.1 触发器基础知识 389
23.1.1 事务的执行流程 390
23.1.2 创建触发器 391
23.1.3 After触发器 391
23.1.4 Instead of触发器 392
23.1.5 对触发器的限制 393
23.1.6 禁用触发器 393
23.1.7 列出触发器 394
23.1.8 触发器与安全性 394
23.2 使用事务 394
23.2.1 确定被更新的列 394
23.2.2 逻辑表Inserted和Deleted 396
23.2.3 开发能够处理多行的触发器 397
23.3 多个触发器之间的交互 398
23.3.1 组织触发器 398
23.3.2 嵌套触发器 398
23.3.3 递归触发器 399
23.3.4 Instead of和After触发器 400
23.3.5 多个After触发器 400
23.4 总结 401
第24章 探讨T-SQL高级解决方案 402
24.1 验证复杂的业务规则 402
24.2 复杂的引用完整性 404
24.3 自定义的行级安全性 405
24.3.1 Security表 406
24.3.2 检查安全权限的存储过程 412
24.3.3 检查安全权限的函数 413
24.3.4 使用NT登录名 413
24.3.5 检查安全权限的触发器 415
24.4 审计数据变更 416
24.4.1 Audit表 416
24.4.2 固定审计跟踪触发器 416
24.4.3 利用审计跟踪回滚 419
24.4.4 审计并发症 420
24.4.5 动态审计跟踪触发器和过程 421
24.5 聚合事务处理 426
24.6 数据的逻辑删除 429
24.6.1 逻辑删除触发器 430
24.6.2 恢复逻辑删除的行 431
24.6.3 筛选掉逻辑删除的行 431
24.6.4 级联逻辑删除 431
24.6.5 不活跃度 432
24.7 数据归档 432
24.8 总结 433
第25章 使用数据抽象层提供可扩展性 434
25.1 Add New存储过程 435
25.2 Fetch存储过程 436
25.3 update存储过程 437
25.3.1 使用RowVersion进行更新 437
25.3.2 最小更新 439
25.4 Delete存储过程 440
25.5 总结 441
第26章 SQL Server Everywhere开发 442
26.1 SQL Server 2005 Everywhere Edition概述 443
26.1.1 发展历程 443
26.1.2 概念 443
26.2 SQL Server 2005 Everywhere Edition新增的功能 446
26.3 SQL Everywhere初步 447
26.3.1 安装SQL Everywhere 447
26.3.2 Query Analyzer 3.0 450
26.3.3 创建SQL Everywhere数据库 451
26.3.4 升级SQL CE 2.0数据库 462
26.4 同步数据 463
26.4.1 远程数据访问 463
26.4.2 合并复制 464
26.4.3 Web服务 464
26.5 打包和部署 466
26.5.1 以编程方式创建数据库 466
26.5.2 随移动应用程序部署一个初始数据库 466
26.5.3 通过合并复制动态地创建数据库 466
26.5.4 其他方法 466
26.6 安全性 467
26.6.1 密码保护 467
26.6.2 加密 467
26.6.3 确保数据同步的安全 467
26.7 优化、维护和管理 468
26.7.1 测量和改善查询的性能 468
26.7.2 SQL Everywhere数据库的维护 468
26.7.3 修复受损的SQL Everywhere数据库 470
26.7.4 确保合并复制的性能 471
26.8 其他参考资源 471
26.9 总结 472
第27章 CLR程序集编程 473
27.1 .NET Framework简介 474
27.1.1 程序集 474
27.1.2 应用程序域 476
27.2 CLR SQL Server类型概述 478
27.2.1 CLR集成.NET类型的属性 478
27.2.2 SQL Server CLR类型都有的特征 479
27.2.3 数据类型 480
27.3 支持CLR集成的.NET方法 482
27.4 T-SQL CLR DDL命令和目录视图 483
27.4.1 程序集 483
27.4.2 数据库对象 484
27.5 使用Visual Studio 2005创建数据库类型 484
27.5.1 创建CLR项目 485
27.5.2 编写CLR存储过程 488
27.5.3 CLR函数 490
27.6 使用CLR还是T-SQL 491
27.7 T-SQL不会消失 492
27.8 总结 493
第28章 使用Service Broker将数据排队 494
28.1 配置消息队列 494
28.2 使用对话 495
28.2.1 将消息发送给队列 495
28.2.2 接收消息 496
28.3 监视Service Broker 497
28.4 总结 498
第29章 持久化自定义数据类型 499
29.1 创建CLR用户定义类型 500
29.1.1 满足需求 501
29.1.2 使用Visual Studio编写CLR UDT 503
29.1.3 测试和调试UDT 508
29.1.4 性能方面的考虑 509
29.2 CLR集成UDT的部署细节 510
29.2.1 强名称程序集和GAC 510
29.2.2 创建强名称.NET程序集 511
29.2.3 维护UDT 512
29.3 总结 513
第30章 ADO.NET.20编程 514
30.1 ADO.NET概述 515
30.1.1 ADO 515
30.1.2 ADO对象模型 519
30.1.3 ADO.NET 524
30.2 Visual Studio 2005中的ADO.NET 533
30.2.1 服务器资源管理器 533
30.2.2 调试ADO.NET 533
30.2.3 应用程序跟踪 534
30.3 创建应用程序 535
30.3.1 连接到SQL Server 535
30.3.2 数据适配器 536
30.3.3 数据阅读器和记录集 536
30.3.4 流 537
30.3.5 异步执行 537
30.3.6 使用单个数据库值 537
30.3.7 修改数据 538
30.3.8 绑定到控件 539
30.4 总结 539
第31章 使用XML、XPath和Xquery 540
31.1 XML数据类型 541
31.1.1 数据类型转换 541
31.1.2 XML数据类型的局限性 541
31.1.3 XML架构集合 542
31.2 XML索引 542
31.3 查询XML数据 543
31.3.1 XPATH 543
31.3.2 FLWOR查询 544
31.3.3 在SQL语句中使用XQuery 544
31.4 分解XML数据 545
31.4.1 将XML数据读取到SQL Server中 545
31.4.2 在SQL Server 2005中创建XML 547
31.5 总结 548
第32章 使用Web服务创建SOA数据存储 549
32.1 HTTP侦听 550
32.1.1 HTTP.sys 550
32.1.2 隐式端点 550
32.1.3 显式端点 551
32.2 WSDL 551
32.3 端点安全 552
32.4 总结 552
第33章 InfoPath和SQL Server 2005 554
33.1 InfoPath 2003概述 554
33.1.1 自动验证有效性 555
33.1.2 离线填写表单 555
33.1.3 条件格式 555
33.1.4 InfoPath 2003的安全性 556
33.1.5 InfoPath对象模型 556
33.1.6 脚本和.NET代码 556
33.2 创建表单模板 557
33.3 InfoPath的其他功能 559
33.4 总结 560
第4部分 企业数据管理
第34章 配置SQL Server 563
34.1 设置选项 563
34.1.1 配置服务器 563
34.1.2 配置数据库 565
34.1.3 配置连接 567
34.2 配置选项 568
34.2.1 显示高级选项 568
34.2.2 启动/停止配置属性 569
34.2.3 内存配置属性 571
34.2.4 处理器配置属性 575
34.2.5 安全配置属性 578
34.2.6 连接配置属性 579
34.2.7 服务器配置属性 582
34.2.8 索引配置属性 583
34.2.9 配置数据库自动选项 584
34.2.10 游标配置属性 585
34.2.11 SQL ANSI配置属性 586
34.2.12 触发器配置属性 588
34.2.13 数据库状态配置属性 589
34.2.14 兼容性级别 590
34.2.15 恢复配置属性 590
34.3 总结 591
第35章 传输数据库 592
35.1 复制数据库向导 593
35.2 使用SQL脚本 595
35.3 分离和附加 597
35.4 总结 599
第36章 恢复规划 600
36.1 恢复的概念 601
36.2 恢复模型 601
36.2.1 简单恢复模型 602
36.2.2 完整恢复模型 602
36.2.3 大容量日志恢复模型 604
36.2.4 设置恢复模型 604
36.2.5 修改恢复模型 605
36.3 备份数据库 605
36.3.1 备份的目的地 605
36.3.2 备份循环 605
36.3.3 使用Management Studio执行备份 606
36.3.4 使用代码备份数据库 607
36.3.5 使用代码验证备份 608
36.4 使用事务日志 609
36.4.1 事务日志内幕 609
36.4.2 备份事务日志 610
36.4.3 截断日志 610
36.4.4 事务日志与简单恢复模型 611
36.5 恢复操作 611
36.5.1 检测问题 611
36.5.2 恢复顺序 612
36.5.3 使用Management Studio执行还原 612
36.5.4 使用T-SQL代码还原 614
36.6 恢复系统数据库 616
36.6.1 系统数据库master 617
36.6.2 系统数据库msdb 617
36.7 执行完整恢复 618
36.8 总结 618
第37章 维护数据库 619
37.1 DBCC命令 619
37.1.1 数据库完整性 620
37.1.2 索引维护 623
37.1.3 数据库文件大小 626
37.1.4 其他DBCC命令 629
37.2 管理数据库维护 630
37.2.1 规划数据库维护 630
37.2.2 维护计划向导 630
37.2.3 以命令行方式执行维护 634
37.2.4 监控数据库维护活动 634
37.3 总结 635
第38章 使用SQL Server代理自动维护数据库 636
38.1 设置SQL Server代理 636
38.2 理解警报、操作员和作业 639
38.3 管理操作员 639
38.4 管理警报 640
38.4.1 创建用户定义错误 641
38.4.2 创建警报 641
38.5 管理作业 643
38.5.1 创建作业类别 644
38.5.2 创建作业定义 645
38.5.3 设置作业步骤 646
38.5.4 配置作业计划 648
38.5.5 指定完成、成功和失败时的通知方式 649
38.6 总结 649
第39章 关系数据库建模 650
39.1 为何复制数据 650
39.1.1 容错/灾难恢复 650
39.1.2 应用程序的要求 651
39.1.3 改善性能 652
39.1.4 分发数据 652
39.2 比较各种数据分发方案 652
39.3 Microsoft复制模型 654
39.3.1 发布服务器 654
39.3.2 订阅服务器 654
39.3.3 分发服务器 655
39.3.4 中央发布服务器 655
39.3.5 中央订阅服务器 655
39.3.6 重新发布 655
39.3.7 对等复制 655
39.3.8 项目 656
39.3.9 推送订阅 656
39.3.10 请求订阅 656
39.4 复制类型 657
39.4.1 快照复制 657
39.4.2 使用立即更新的快照复制 657
39.4.3 使用排队更新的快照复制 658
39.4.4 使用立即更新和排队故障转移的快照复制 658
39.5 事务复制 658
39.5.1 快照代理 659
39.5.2 日志读取器代理 659
39.5.3 分发代理 659
39.5.4 对等复制 659
39.5.5 双向事务复制 660
39.5.6 使用立即更新的事务复制 660
39.5.7 使用排队更新的事务复制 660
39.5.8 使用立即更新和排队故障转移的事务复制 660
39.5.9 通过Internet进行事务复制 661
39.5.10 合并复制 661
39.5.11 合并复制和SQL CE/SQL Mobile订阅服务器 663
39.5.12 通过Internet进行合并复制 663
39.6 SQL 2005新增的复制功能 663
39.6.1 可重新启动的快照 663
39.6.2 Orcale发布 663
39.6.3 极其严密的安全性 663
39.6.4 对等复制模型 664
39.6.5 复制所有DDL 664
39.6.6 复制全文索引 664
39.6.7 允许匿名订阅所有发布 664
39.6.8 合并复制中的逻辑记录 664
39.6.9 预计算分区 665
39.6.10 更新唯一键 665
39.6.11 使用SQL RMO自定义冲突处理方式 665
39.6.12 各种性能改善 665
39.6.13 滞后令牌 665
39.6.14 事务并行度 665
39.6.15 仅限下载项目 666
39.6.16 复制监视器 666
39.6.17 通过HTTPS进行合并复制 667
39.6.18 改善了合并复制的性能和伸缩性 667
39.6.19 SQL RMO 667
39.6.20 简化的向导 668
39.6.21 初始化订阅服务器 668
39.7 配置复制 668
39.7.1 使用本地分发服务器 669
39.7.2 使用远程分发服务器 669
39.8 创建快照复制发布 669
39.8.1 创建事务复制发布 672
39.8.2 创建双向事务复制发布 675
39.8.3 创建Oracle发布 675
39.8.4 创建对等复制发布 676
39.8.5 创建合并复制发布 677
39.8.6 创建订阅 679
39.8.7 创建Web同步订阅 680
39.9 监视复制解决方案 683
39.9.1 代理配置文件 684
39.9.2 所有订阅 684
39.9.3 警告和代理 685
39.9.4 修改复制代理的属性 686
39.9.5 跟踪令牌 686
39.10 复制的性能 687
39.11 排除复制故障 687
39.12 总结 688
第40章 确保数据库安全 689
40.1 安全概念 690
40.1.1 服务器级安全性 690
40.1.2 数据库级安全性 691
40.1.3 对象的所有权 691
40.2 Windows安全性 692
40.2.1 Windows安全性 692
40.2.2 SQL Server登录名 692
40.3 服务器安全性 692
40.3.1 SQL Server身份验证模式 692
40.3.2 Windows身份验证 693
40.3.3 SQL Server登录名 697
40.3.4 服务器角色 698
40.4 数据库安全性 699
40.4.1 Guest登录名 699
40.4.2 授予访问数据库的权限 700
40.4.3 固定的数据库角色 701
40.4.4 安全对象权限 703
40.4.5 应用程序角色 703
40.5 对象安全性 703
40.5.1 对象权限 704
40.5.2 标准数据库角色 705
40.5.3 对象安全性和Management Studio 706
40.5.4 安全模型示例 707
40.6 C2级安全性 708
40.7 视图和安全性 709
40.8 加密 709
40.8.1 加密简介 709
40.8.2 SQL Server加密层次结构 710
40.8.3 使用通行短语进行加密 710
40.8.4 使用对称密钥进行加密 711
40.9 防范SQL注入攻击 713
40.9.1 附加恶意代码 713
40.9.2 使用or 1=1 714
40.9.3 绕开密码保护 714
40.9.4 防范 714
40.10 总结 715
第41章 管理SQL Server Express 716
41.1 安装SQL Server Express 717
41.1.1 使用命令行参数以静默方式安装SSE 717
41.1.2 使用INI文件安装SSE 720
41.2 SQL Server Management Studio Express 721
41.3 总结 722
第5部分 商业智能
第42章 使用Integration Services实现ETL 725
42.1 设计环境 726
42.1.1 连接管理器 727
42.1.2 变量 728
42.1.3 配置元素 729
42.1.4 事件处理程序 732
42.1.5 在开发中执行包 732
42.2 Integration Services包的元素 733
42.2.1 连接管理器 733
42.2.2 控制流元素 736
42.2.3 数据流组件 741
42.3 易于维护和管理的包 749
42.3.1 日志记录 750
42.3.2 包配置 751
42.3.3 检查点重启 752
42.4 包的部署 752
42.4.1 包的安装 752
42.4.2 包的执行 753
42.5 总结 753
第43章 使用Analysis Services实现商业智能 754
43.1 数据仓库 754
43.1.1 星形架构 755
43.1.2 一致性 756
43.1.3 加载数据 756
43.1.4 Analysis Services快速入门 758
43.2 Analysis Services的体系结构 758
43.2.1 统一维度模型 759
43.2.2 服务器 759
43.2.3 客户端 760
43.3 建立数据库 760
43.3.1 Business Intelligence Development Studio 760
43.3.2 数据源 761
43.3.3 数据源视图 761
43.3.4 创建多维数据集 764
43.4 维度 765
43.4.1 维度设计器 765
43.4.2 修改维度中的数据 770
43.4.3 非常规维度 771
43.4.4 精炼维度 773
43.5 多维数据集 774
43.5.1 多维数据集结构 775
43.5.2 维度用法 776
43.5.3 KPI 778
43.5.4 操作 778
43.5.5 分区 778
43.5.6 透视 780
43.6 数据存储 780
43.6.1 SQL Server通知 782
43.6.2 客户端发起的通知 782
43.6.3 按计划轮询 782
43.7 数据完整性 782
43.7.1 空值处理 783
43.7.2 未知成员 784
43.7.3 错误配置 784
43.8 总结 785
第44章 使用Analysis Services进行数据挖掘 786
44.1 数据挖掘过程 787
44.2 算法 793
44.2.1 决策树 793
44.2.2 线性回归 794
44.2.3 聚类分析 794
44.2.4 序列分类 796
44.2.5 神经网络 796
44.2.6 逻辑回归 796
44.2.7 Naive Bayes 797
44.2.8 关联规则 797
44.2.9 时序 797
44.3 OLAP集成 798
44.4 总结 799
第45章 MDX查询编程 800
45.1 基本选择查询 801
45.1.1 多维数据集寻址 801
45.1.2 维度的结构 802
45.1.3 基本SELECT语句 802
45.2 高级选择查询 806
45.2.1 子多维数据集 807
45.2.2 WITH子句 807
45.2.3 对维度的考虑 810
45.3 MDX脚本编程 811
45.3.1 计算成员和命名集 812
45.3.2 添加商业智能 812
45.4 总结 813
第46章 使用Reporting Services制作报表 814
46.1 报表剖析 814
46.1.1 报表定义语言(RDL) 814
46.1.2 数据源 815
46.1.3 Reporting Services数据集 816
46.1.4 查询参数和报表参数 817
46.1.5 报表的内容和布局 817
46.2 报表制作过程 818
46.2.1 在Visual Studio 2005中创建Reporting Services项目 818
46.2.2 创建报表的步骤 819
46.2.3 使用报表向导创建报表 819
46.2.4 从空白开始创建报表 819
46.3 使用数据 821
46.3.1 在报表设计器中使用SQL 822
46.3.2 使用查询参数来选择和筛选数据 822
46.3.3 在数据集中添加计算字段 825
46.3.4 使用XML数据源 825
46.3.5 使用表达式 827
46.4 设计报表布局 829
46.4.1 设计基础 829
46.4.2 使用表和矩阵的“属性”对话框 831
46.4.3 对表和矩阵中的数据进行分组和排序 832
46.4.4 使用图表展示数据 835
46.4.5 在报表中添加饼图 835
46.5 总结 836
第47章 使用Reporting Services管理报表 837
47.1 部署Reporting Services报表 837
47.1.1 使用Visual Studio 2005部署报表 838
47.1.2 使用报表管理器部署报表 839
47.1.3 使用Reporting Services Web服务以编程方式部署报表 839
47.2 使用报表服务器配置Reporting Services 840
47.2.1 配置Reporting Services站点设置 840
47.2.2 管理安全性 841
47.2.3 使用链接报表 844
47.2.4 创建链接报表 844
47.2.5 利用订阅的强大威力 844
47.2.6 创建数据驱动订阅 845
47.3 总结 848
第48章 使用Excel和Data Analyzer分析数据 849
48.1 Excel数据透视表 849
48.1.1 多维连接 850
48.1.2 关系连接 852
48.1.3 创建数据透视表 853
48.1.4 创建数据透视图 855
48.2 Excel数据区域 856
48.3 Data Analyzer 856
48.3.1 创建视图 857
48.3.2 设置视图的格式 857
48.4 总结 858
第6部分 优化策略
第49章 度量性能 861
49.1 度量准确性 861
49.2 使用性能监视器 862
49.2.1 系统监视器 862
49.2.2 计数器日志 864
49.3 使用SQL Server Profiler 865
49.3.1 定义新的跟踪 866
49.3.2 选择事件 866
49.3.3 筛选事件 867
49.3.4 组织列 867
49.3.5 使用Profiler跟踪 868
49.3.6 集成性能监视器的数据 868
49.4 使用SQL跟踪 869
49.5 使用Transact-SQL 870
49.5.1 使用动态管理视图 870
49.5.2 使用GetDate() 870
49.5.3 使用statistics 870
49.6 数据库性能KPI 871
49.6.1 可重复的性能测试 872
49.6.2 生产性能数据 872
49.6.3 伸缩性性能负载测试 873
49.7 总结 873
第50章 确保数据安全 874
50.1 一种索引优化的整体方法 874
50.2 索引 875
50.2.1 索引基础 875
50.2.2 创建索引 876
50.2.3 索引选项 879
50.2.4 创建基本索引 882
50.3 查询分析 882
50.3.1 查看查询执行计划 882
50.3.2 使用Showplan选项 882
50.3.3 解释查询执行计划 883
50.4 索引优化 885
50.4.1 索引缺失 885
50.4.2 书签查找 887
50.4.3 可优化的SARG 887
50.4.4 索引的选择性 887
50.5 重用查询执行计划 888
50.6 一种全面的索引策略 889
50.7 使用数据库引擎优化顾问 890
50.8 总结 891
第51章 管理事务、锁定和阻塞 892
51.1 有关事务的基本知识 892
51.2 事务完整性 894
51.2.1 ACID属性 894
51.2.2 事务缺陷 895
51.2.3 隔离级别 898
51.3 事务日志的体系结构 899
51.3.1 事务日志序列 899
51.3.2 恢复事务日志 902
51.4 理解SQL Server锁定 903
51.4.1 锁的粒度 903
51.4.2 锁模式 904
51.4.3 锁的持续时间 905
51.4.4 监控锁定和阻塞 906
51.5 控制SQL Server锁定 908
51.5.1 设置连接的隔离级别 908
51.5.2 使用数据库快照隔离 908
51.5.3 使用锁定提示 910
51.5.4 对索引级锁定的限制 911
51.5.5 控制锁超时 911
51.5.6 评估数据库的并发性能 912
51.5.7 应用程序锁 912
51.6 死锁 913
51.6.1 创建死锁 913
51.6.2 自动检测死锁 915
51.6.3 处理死锁 915
51.6.4 最大程度地减少死锁 916
51.7 应用程序锁定设计 916
51.7.1 实现乐观锁定 916
51.7.2 丢失更新 916
51.8 提高事务性能的策略 918
51.9 总结 919
第52章 提供高可用性 920
52.1 可用性测试 921
52.1.1 热备用可用性 921
52.1.2 日志传送 921
52.1.3 传送用户 924
52.1.4 返回原来的主服务器 924
52.2 故障转移服务器和群集 924
52.3 安装故障转移SQL Server 925
52.4 配置 926
52.5 数据库镜像 927
52.5.1 必备条件 927
52.5.2 配置 927
52.6 设计环境 928
52.7 总结 929
第53章 扩展超大型数据库 930
53.1 优化理论和伸缩性 931
53.1.1 向外扩展平台 931
53.1.2 向上扩展解决方案 933
53.2 分区表和分区索引 933
53.2.1 创建分区函数 934
53.2.2 创建分区方案 935
53.2.3 创建分区表 936
53.2.4 查询分区表 938
53.2.5 修改分区表 939
53.2.6 表切换 939
53.2.7 滚动分区 942
53.2.8 给分区表建立索引 942
53.2.9 撤销分区 942
53.3 使用索引视图 942
53.3.1 索引视图和查询 944
53.3.2 更新索引视图 945
53.4 总结 945
第54章 设计高性能的数据访问提供程序 946
54.1 数据访问概念 946
54.1.1 为何优秀的数据访问模式很重要 947
54.1.2 定义需求 947
54.2 数据访问对象 947
54.2.1 DAO的工作原理 948
54.2.2 DAO模式的缺点 950
54.3 工厂模式 951
54.3.1 工厂模式的优点 953
54.3.2 工厂模式的缺点 953
54.4 数据提供程序模式 954
54.4.1 数据提供程序模式的工作原理 955
54.4.2 数据提供程序模式的优点 963
54.4.3 数据提供程序模式的缺点 963
54.5 总结 964
附录A SQL Server 2005规范 965
附录B 示例数据库 969
B.1 示例数据库文件 970
B.2 CaPe Harteras Adventures第2版 971
B.2.1 应用程序需求 971
B.2.2 数据库设计 971
B.3 OBX Kites 972
B.3.1 应用程序需求 972
B.3.2 数据库设计 973
B.4 Family 973
B.4.1 应用程序需求 973
B.4.2 数据库设计 974
B.5 Aesop'S Fables 974
B.5.1 应用程序需求 974
B.5.2 数据库设计 974
猜您喜欢

读书导航