第一篇 日常应用 1
第1章 安装及常用工具使用 3
1.1 基础知识 4
1.1.1 SQL Server 2008产品概况 4
1.1.2 安装SQL Server 2008的软、硬件需求 4
1.2 应用情景 6
应用情景1 安装SQL Server 2008数据库 6
应用情景2 查看和配置SQL Server服务 14
应用情景3 配置Windows防火墙允许访问SQL Server 2008服务器 15
应用情景4 使用SQL Server Management Studio 16
应用情景5 使用SQL Server Business Intelligence Development Studio 19
应用情景6 SQL Server配置管理器 20
应用情景7 osql实用工具 21
应用情景8 sqlcmd实用工具 22
第2章 Transact—SQL语言 24
2.1 基础知识 25
2.1.1 Transact-SQL的语法元素 25
2.1.2 数据库对象的命名 26
2.1.3 同义词 27
2.1.4 数据类型 27
2.1.5 常量 31
2.1.6 变量 32
2.1.7 运算符 33
2.1.8 常用函数 35
2.1.9 流程控制语句 38
2.1.10 Transact-SQL语句的解析、编译和执行 40
2.2 应用情景 40
应用情景9 使用PRINT语句向客户端返回用户定义的消息 40
应用情景10 使用SET STATISTICS IO语句 41
应用情景11 使用SET STATISTICS TIME语句 42
应用情景12 创建同义词 43
应用情景13 删除同义词 44
应用情景14 从系统视图sys.synonyms中查询同义词信息 44
应用情景15 创建用户定义数据类型 45
应用情景16 删除用户定义数据类型 47
应用情景17 从INFORMATION_SCHEMA.DOMAINS中获取用户定义数据类型信息 48
应用情景18 查看用户定义数据类型的使用情况 49
应用情景19 练习使用日期和时间函数 50
应用情景20 练习使用数学函数 51
应用情景21 使用SET DATEFORMAT设置日期和时间格式 51
应用情景22 练习使用字符串函数 52
应用情景23 练习使用IF...ELSE语句 53
应用情景24 练习使用WHILE语句 54
应用情景25 练习使用WAITFOR语句 55
应用情景26 练习使用GOTO语句 55
应用情景27 练习使用TRY...CATCH语句 55
应用情景28 查看错误消息 56
应用情景29 使用RAISERROR语句生成错误消息 57
应用情景30 使用sp_addmessage存储过程添加用户定义错误 58
应用情景31 使用sp_altermessage存储过程修改用户定义错误消息 59
应用情景32 使用sp_dropmessage存储过程删除用户定义错误消息 59
第3章 数据库管理 60
3.1 基础知识 61
3.1.1 系统数据库 61
3.1.2 数据库文件 61
3.1.3 文件组 62
3.1.4 页和区 63
3.2 应用情景 63
应用情景33 在SQL Server Management Studio中创建数据库 64
应用情景34 在SQL Server Management Studio中查看数据库信息 65
应用情景35 使用SELECT语句查看数据库信息 66
应用情景36 使用sp_helpdb查看数据库信息 67
应用情景37 使用sp_spaceused查看数据库空间使用信息 69
应用情景38 使用简单的CREATE DATABASE语句创建数据库 70
应用情景39 使用CREATE DATABASE语句在创建数据库时指定数据文件 71
应用情景40 在SQL Server Management Studio中创建和使用文件组 72
应用情景41 使用CREATE DATABASE语句在创建数据库时指定文件组 73
应用情景42 使用CREATE DATABASE语句在创建数据库时指定事务日志文件 74
应用情景43 向数据库中添加文件组 75
应用情景44 修改文件组属性 76
应用情景45 删除文件组 76
应用情景46 向数据库中添加文件 76
应用情景47 修改数据库中的文件 77
应用情景48 删除数据库中的文件 78
应用情景49 从系统视图sys.database_files中获取数据文件的信息 79
应用情景50 在SQL Server Management Studio中扩充数据或事务日志空间 80
应用情景51 在SQL Server Management Studio中收缩数据或事务日志空间 82
应用情景52 使用DBCC SHRINKDATABASE语句收缩数据库 83
应用情景53 使用DBCC SHRINKFILE语句收缩指定的数据库文件 84
应用情景54 设置自动收缩数据库选项 84
应用情景55 重命名数据库 85
应用情景56 删除数据库 86
应用情景57 查看数据库磁盘使用情况 87
应用情景58 移动用户数据库 87
第4章 表和视图 89
4.1 基础知识 90
4.1.1 表 90
4.1.2 表约束 90
4.1.3 视图 91
4.2 应用情景 92
应用情景59 创建表 92
应用情景60 查看和管理表中的数据 96
应用情景61 查看表的磁盘空间信息 97
应用情景62 使用DBCC CHECKIDENT命令检查和设置表的标识值 97
应用情景63 重命名表 99
应用情景64 修改表的列名 99
应用情景65 向表中添加列 100
应用情景66 修改列属性 100
应用情景67 删除表中的列 101
应用情景68 删除表 101
应用情景69 创建主键约束 102
应用情景70 修改主键约束 104
应用情景71 删除主键约束 104
应用情景72 创建、修改和删除唯一性约束 105
应用情景73 从sys.key_constraints获取约束信息 106
应用情景74 创建检查约束 107
应用情景75 修改检查约束 109
应用情景76 删除检查约束 109
应用情景77 从INFORMATION_SCHEMA.CHECK_CONSTRAINTS获取检查约束信息 109
应用情景78 创建和使用默认约束 110
应用情景79 创建和使用外键约束 111
应用情景80 从sys.foreign_keys获取表中的外键约束 114
应用情景81 从sys.foreign_key_columns获取外键约束的列信息 115
应用情景82 从INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS获取外键约束信息 116
应用情景83 从INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE获取约束信息 117
应用情景84 从INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE获取表中的约束 118
应用情景85 从INFORMATION_SCHEMA.TABLE_CONSTRAINTS获取约束的基本信息 119
应用情景86 从INFORMATION_SCHEMA.KEY_COLUMN_USAGE获取键约束列的信息 120
应用情景87 创建视图 121
应用情景88 修改视图 125
应用情景89 删除视图 125
应用情景90 从INFORMATION_SCHEMA.TABLES中获取表和视图信息 126
应用情景91 从INFORMATION_SCHEMA.VIEWS中获取视图信息 127
应用情景92 从INFORMATION_SCHEMA.COLUMNS中获取列信息 128
应用情景93 从INFORMATION_SCHEMA.VIEW_COLUMN_USAGE获取视图中列的信息 130
应用情景94 从sys.columns中获取列信息 130
应用情景95 从INFORMATION_SCHEMA.VIEW_TABLE_USAGE获取视图中包含表的信息 133
应用情景96 从系统表sys.objects中获取所有数据库对象的信息 134
第5章 规则和索引 135
5.1 基础知识 136
5.1.1 规则 136
5.1.2 索引 136
5.2 应用情景 137
应用情景97 创建规则 138
应用情景98 查看规则 138
应用情景99 绑定规则 139
应用情景100 解除绑定规则 139
应用情景101 删除规则 140
应用情景102 在SQL Server Management Studio中查看索引信息 140
应用情景103 使用sp_helpindex存储过程 141
应用情景104 从系统视图sys.indexes中查询索引信息 142
应用情景105 从系统视图sys.index_columns中查询索引信息 143
应用情景106 从系统视图sys.sysindexkeys中查询索引的键或列信息 145
应用情景107 创建索引 146
应用情景108 创建带包含列的索引 148
应用情景109 修改索引 148
应用情景110 删除索引 149
应用情景111 从系统视图sys.dm_db_index_usage_stats中查询索引操作的信息 149
应用情景112 在SQL Server Management Studio中查看统计信息 151
应用情景113 使用系统视图sys.stats查看统计信息 153
应用情景114 使用系统视图sys.stats_columns查看统计信息中列的信息 154
应用情景115 使用DBCC SHOW_STATISTICS命令查看统计信息的明细信息 155
应用情景116 使用sp_autostats存储过程查看索引自动创建的统计信息 156
应用情景117 创建统计信息 156
应用情景118 修改统计信息 160
应用情景119 删除统计信息 161
应用情景120 使用索引优化数据库查询效率 162
应用情景121 无法使用索引的SELECT语句 164
应用情景122 重新组织和重新生成索引 165
应用情景123 禁用索引 168
应用情景124 使用索引视图 169
第6章 数据库安全管理 172
6.1 基础知识 173
6.1.1 SQL Server登录 173
6.1.2 SQL Server系统用户 174
6.1.3 角色的概念 174
6.1.4 权限概述 176
6.2 应用情景 177
应用情景125 创建登录名 177
应用情景126 修改登录名 180
应用情景127 删除登录名 180
应用情景128 获取尝试登录的次数 181
应用情景129 创建用户 181
应用情景130 修改用户 183
应用情景131 删除用户 183
应用情景132 获取当前登录的用户名 183
应用情景133 创建角色 184
应用情景134 管理角色中的用户 186
应用情景135 判断当前用户是否属于指定角色或Windows组 188
应用情景136 修改角色 188
应用情景137 删除角色 189
应用情景138 创建架构 190
应用情景139 修改架构 192
应用情景140 删除架构 193
应用情景141 从系统视图INFORMATION_SCHEMA.SCHEMATA中查询架构信息 193
应用情景142 设置权限 194
应用情景143 从系统视图sys.sysusers中查询用户信息 200
第7章 SQL Server硬件管理和配置 202
7.1 基础知识 203
7.1.1 Windows内存管理 203
7.1.2 优化Windows内存性能 204
7.1.3 优化SQL Server服务器的磁盘性能 205
7.2 应用情景 206
应用情景144 SQL Server对大容量内存的支持 206
应用情景145 手动配置内存选项 207
应用情景146 监测SQL Server内存使用情况 210
应用情景147 监测SQL Server磁盘活动情况 213
应用情景148 获取磁盘读写情况 215
应用情景149 获取数据库文件的I/O统计信息 215
应用情景150 获取I/O工作情况 216
应用情景151 使用系统监测器来监测CPU活动情况 217
应用情景152 使用SQL Server函数查看Server SQL CPU活动情况 217
应用情景153 获取CPU的工作情况 218
应用情景154 线程管理 219
应用情景155 获取网络数据包统计信息 220
第8章 服务器与客户端配置 221
8.1 基础知识 222
8.1.1 SQL Server服务器与客户端结构 222
8.1.2 服务器配置选项 223
8.2 应用情景 224
应用情景156 创建服务器组 224
应用情景157 注册服务器 225
应用情景158 启动、暂停和停止SQL Server 227
应用情景159 配置服务器属性 229
应用情景160 从系统视图sys.configurations中查询服务器配置选项信息 231
应用情景161 使用系统存储过程sp_configure查询服务器配置选项信息 232
应用情景162 使用系统存储过程sp_configure修改服务器配置选项 233
应用情景163 配置网络连接 233
应用情景164 配置客户端网络 235
应用情景165 配置ODBC数据源 236
应用情景166 测试客户端的配置 238
第9章 维护数据库 239
9.1 基础知识 240
9.1.1 备份数据库的类型和模式 240
9.1.2 还原数据库的类型 242
9.1.3 数据库快照 242
9.2 应用情景 243
应用情景167 将表中数据导出到文本文件 244
应用情景168 将表中数据导出到Access数据库 249
应用情景169 从文本文件向SQL Server数据库中导入数据 251
应用情景170 从Access数据库中导入数据 255
应用情景171 分离数据库 257
应用情景172 附加数据库 259
应用情景173 在SQL Server Management Studio中创建数据库备份 261
应用情景174 使用BACKUP DATABASE语句备份整个数据库 263
应用情景175 使用BACKUP LOG语句备份数据库中的日志 264
应用情景176 使用存储过程sp_addumpdevice创建逻辑备份设备 264
应用情景177 从系统视图sys.backup_devices中查询备份设备信息 264
应用情景178 实现差异备份 265
应用情景179 部分备份 266
应用情景180 备份指定的文件组或文件 266
应用情景181 仅复制数据库备份 267
应用情景182 在SQL Server Management Studio中还原数据库备份 267
应用情景183 使用RESTORED DATABASE语句还原数据库备份 271
应用情景184 使用RESTORED LOG语句还原数据库日志 271
应用情景185 创建数据库快照 272
应用情景186 查看数据库快照 273
应用情景187 恢复到数据库快照 274
应用情景188 删除数据库快照 274
应用情景189 使用DBCC CHECKALLOC命令检查磁盘空间分配结构的一致性 274
应用情景190 使用DBCC CHECKTABLE命令检查表或索引视图的完整性 275
应用情景191 使用DBCC CHECKCATALOG命令检查数据库内系统表的一致性 276
应用情景192 使用DBCC CHECKDB命令检数据库对象的结构和逻辑完整性 276
应用情景193 使用DBCC SQLPERF命令监视日志空间使用情况 277
第10章 常用数据操纵语言(DML) 278
10.1 基础知识 279
10.1.1 本章的演示数据 279
10.1.2 SELECT语句的基本语法 279
10.2 应用情景 281
应用情景194 最简单的SELECT语句 281
应用情景195 指定要查询的列 281
应用情景196 使用DISTINCT关键字 282
应用情景197 使用TOP n[PERCENT]关键字 283
应用情景198 改变显示的列标题 284
应用情景199 设置查询条件 285
应用情景200 在查询条件中使用BETWEEN关键字 286
应用情景201 在查询条件中使用IN关键字 286
应用情景202 实现模糊查询 287
应用情景203 排序结果集 289
应用情景204 对多列进行排序 290
应用情景205 使用分组统计 291
应用情景206 生成汇总行 293
应用情景207 连接查询 294
应用情景208 在连接查询中对空值的判断 298
应用情景209 一个简单的子查询 299
应用情景210 在子查询中使用聚合函数返回单值 300
应用情景211 IN关键字与返回多值的子查询 301
应用情景212 EXISTS关键字与子查询 302
应用情景213 使用UNION关键字的合并查询 303
应用情景214 使用CAST和CONVERT函数进行类型转换 304
应用情景215 保存查询结果 306
应用情景216 插入数据语句 307
应用情景217 在插入数据时利用默认值 308
应用情景218 修改数据语句 308
应用情景219 修改数据时不允许设置标识列的值 309
应用情景220 修改数据时不允许在惟一性约束列中使用相同的数据 309
应用情景221 修改数据时不能违反检查约束 310
应用情景222 修改数据时不能与绑定到列的规则冲突 310
应用情景223 删除数据语句 310
第二篇 深入管理 313
第11章 使用Reporting Services设计报表 315
11.1 基础知识 316
11.1.1 安装Reporting Services 316
11.1.2 检测组件是否安装成功 319
11.2 应用情景 323
应用情景224 创建和设计报表 324
应用情景225 在报表中对数据进行排序 332
应用情景226 在报表中添加分组 333
应用情景227 向报表中添加总计 335
应用情景228 使用简单的参数 336
应用情景229 设置可用值的参数查询 338
应用情景230 在报表中添加饼图 341
应用情景231 在报表中添加条形图 344
第12章 事务与锁 347
12.1 基础知识 348
12.1.1 事务的概念和特性 348
12.1.2 事务的分类 349
12.1.3 事务的并发 349
12.1.4 锁定机制 349
12.1.5 锁的兼容性 350
12.1.6 事务中不允许使用的SQL语句 351
12.1.7 锁的粒度和层次结构 352
12.1.8 产生死锁的原因 352
12.1.9 尽量减少死锁 354
12.2 应用情景 355
应用情景232 启动事务 355
应用情景233 提交事务 356
应用情景234 回滚事务 356
应用情景235 定义保存点 357
应用情景236 使用SET XACT_ABORT语句 358
应用情景237 嵌套事务 360
应用情景238 使用DBCC OPENTRAN查看当前的活动事务 362
应用情景239 显示锁活动情况 362
应用情景240 设置事务隔离级别选项 365
应用情景241 设置锁超时时间 371
第13章 存储过程、函数和触发器 372
13.1 背景知识 373
13.1.1 什么是存储过程 373
13.1.2 什么是用户定义函数 373
13.1.3 触发器的基本概念 374
13.1.4 inserted和deleted表 375
13.2 应用情景 375
应用情景242 创建存储过程 376
应用情景243 执行不带参数的存储过程 377
应用情景244 带参数的存储过程 378
应用情景245 存储过程的返回值 379
应用情景246 修改和重命名存储过程 380
应用情景247 删除存储过程 382
应用情景248 从INFORMATION_SCHEMA.ROUTINE_COLUMNS中获取存储过程信息 382
应用情景249 系统存储过程 383
应用情景250 创建标量函数 385
应用情景251 创建内联表值函数 386
应用情景252 创建多语句表值函数 387
应用情景253 修改和重命名用户定义函数 389
应用情景254 删除用户定义函数 390
应用情景255 在SQL Server Management Studio中创建触发器 390
应用情景256 使用CREATE TRIGGER语句创建触发器 391
应用情景257 修改触发器 394
应用情景258 使用sp_rename重命名触发器 396
应用情景259 删除触发器 396
应用情景260 从sys.triggers中获取触发器的信息 396
应用情景261 使用存储过程sp_helptext查看触发器的定义文本 398
应用情景262 使用存储过程sp_helptrigger查看触发器的属性 398
应用情景263 禁用和启用触发器 399
第14章 游标 401
14.1 基础知识 402
14.1.1 什么是游标 402
14.1.2 游标的分类 402
14.2 应用情景 404
应用情景264 声明游标 404
应用情景265 打开游标 406
应用情景266 读取游标数据 406
应用情景267 关闭游标 408
应用情景268 获取游标状态 409
应用情景269 删除游标 410
应用情景270 使用存储过程sp_cursor_lis获取游标属性 411
应用情景271 使用存储过程sp_describe_cursor获取游标属性 413
应用情景272 使用存储过程sp_describe_cursor_columns获取游标属性 414
应用情景273 使用存储过程sp_describe_cursor_tables获取游标的基表 416
应用情景274 修改游标结果集中的行 418
应用情景275 删除游标结果集中的行 418
第15章 全文搜索 420
15.1 基础知识 421
15.1.1 全文搜索的基本概念 421
15.1.2 全文搜索的体系结构 422
15.1.3 使用FILESTREAM技术保存大对象数据 423
15.2 应用情景 423
应用情景276 在SQL Server Management Studio中创建全文目录 423
应用情景277 使用CRAETE FULLTEXT CATALOG语句创建全文目录 424
应用情景278 修改全文目录 425
应用情景279 删除全文目录 426
应用情景280 在表Employees中添加全文搜索列 426
应用情景281 使用全文索引向导创建全文索引 427
应用情景282 使用CRAETE FULLTEXT INDEX语句创建全文索引 432
应用情景283 启用和禁用全文索引 432
应用情景284 删除全文索引 432
应用情景285 查询全文目录的使用情况 433
应用情景286 从sys.fulltext_indexes中查询全文索引的情况 433
应用情景287 从sys.fulltext_index_columns中查询全文索引的情况 434
应用情景288 设置用于全文搜索的FDHOST启动器服务账户 435
应用情景289 使用CONTAINS谓词执行全文搜索 436
应用情景290 使用FREETEXT谓词执行全文搜索 438
应用情景291 启用FILESTREAM 440
应用情景292 创建启用FILESTREAM的数据库 440
应用情景293 创建保存FILESTREAM数据的表 441
应用情景294 使用Transact-SQL管理FILESTREAM数据 442
应用情景295 使用Visual C#语言管理FILESTREAM数据 443
应用情景296 在保存文件数据的列中实现全文搜索 450
第三篇 系统优化 451
第16章 使用空间数据 455
16.1 基础知识 456
16.1.1 空间数据类型 456
16.1.2 Point类型 456
16.1.3 MultiPoint类型 457
16.1.4 LineString类型 458
16.1.5 MultiLineString类型 458
16.1.6 Polygon类型 459
16.1.7 MultiPolygon类型 460
16.1.8 GeometryCollection类型 461
16.2 应用情景 462
应用情景297 在创建表时定义geometry类型的列 462
应用情景298 向表中插入几何数据 462
应用情景299 从表中获取几何数据 463
应用情景300 获取geometry实例中包含的点 464
应用情景301 获取geometry实例的维度信息 465
应用情景302 检查是否为空 466
应用情景303 判断geometry实例是否简单 467
应用情景304 返回geometry实例的边界 467
应用情景305 检查geometry实例的闭合性 468
应用情景306 确定两个实例是否包含相同的点集 469
应用情景307 确定两个实例是否不相接 469
应用情景308 确定两个实例是否相交 470
应用情景309 确定两个实例是否接触 470
应用情景310 确定两个实例是否重叠 470
应用情景311 确定两个实例是否交叉 471
应用情景312 确定一个实例是否在另外一个实例的内部 471
应用情景313 确定一个实例是否完全包含另外一个实例 471
应用情景314 确定两个几何图形中点之间的最短距离 472
第17章 常用性能监测和优化工具 473
17.1 基础知识 474
17.1.1 常用性能监测和优化工具 474
17.1.2 下载和安装RML分析工具 474
17.2 应用情景 476
应用情景315 使用SQL Server Profiler记录数据库的跟踪数据 476
应用情景316 筛选跟踪数据 480
应用情景317 重播跟踪 481
应用情景318 实用SQL Server Profiler定位和分析问题 484
应用情景319 使用数据库引擎优化顾问分析数据库性能 485
应用情景320 数据库引擎优化顾问中的优化选项 491
应用情景321 数据库引擎优化顾问的应用建议 492
应用情景322 使用dta实用工具 493
应用情景323 ReadTrace实用工具 494
应用情景324 OSTRESS实用工具 501
第18章 对SQL语句进行分析和优化 503
18.1 基础知识 504
18.1.1 影响查询语句执行性能的常见因素 504
18.1.2 如何定位导致查询运行慢的原因 504
18.1.3 使用SET STATISTICS IO语句检查查询所产生的I/O操作 505
18.1.4 使用SET STATISTICS TIME语句检查查询使用的时间和CPU使用情况 506
18.1.5 查看执行计划 507
18.1.6 准备演示数据 509
18.2 应用情景 510
应用情景325 控制SELECT语句中行和列的数量 510
应用情景326 慎用DISTINCT关键字 513
应用情景327 慎用UNION关键字 515
应用情景328 判断表中是否存在记录 518
应用情景329 连接查询的优化 518
应用情景330 使用INSERT INTO...SELECT语句优化批量插入操作 520
应用情景331 优化修改和删除语句 522
第19章 数据库分区技术 523
19.1 基础知识 524
19.1.1 分区技术的分类 524
19.1.2 分区表 525
19.1.3 确定分区依据列和分区数 527
19.1.4 创建文件组 528
19.1.5 设计分区视图 531
19.2 应用情景 532
应用情景332 使用向导创建分区表 532
应用情景333 查询普通表与分区表的比较 538
应用情景334 使用CREATE PARTITION FUNCTION语句创建分区函数 539
应用情景335 使用DROP PARTITION FUNCTION语句删除分区函数 541
应用情景336 使用CREATE PARTITION SCHEME语句创建分区方案 541
应用情景337 使用DROP PARTITION SCHEME语句删除分区方案 542
应用情景338 创建分区表 542
应用情景339 创建分区索引 543
应用情景340 查看分区表明细信息 544
应用情景341 拆分和合并分区 546
应用情景342 分区中的数据移动 546
应用情景343 创建分区视图 548
应用情景344 在分区视图中修改数据 553
应用情景345 从系统表sys.data_spaces中获取数据空间信息 554