SQL Server 2008学习笔记:日常维护、深入管理、性能优化
作 者: 吴戈 等编著
出版时间:2009
内容简介
SQL Server 2008是Microsoft公司在数据库领域中非常重要的产品,是关系型数据库的代表产品之一,很多大型数据库应用系统都采用SQL Server作为后台数据库。《SQL Server 2008学习笔记:日常维护、深入管理、性能优化》设计了大量的实验,介绍了数据库管理员和开发人员常用的管理、维护和优化SQL Server 2008数据库技术。通过阅读《SQL Server 2008学习笔记:日常维护、深入管理、性能优化》,读者可以了解SQL Server 2008的体系结构、安装过程、数据库管理和配置、数据库安全、数据库日常维护、Transact-SQL语言等数据库管理员的必备常识,还可以掌握SQL Server 2008的多种高级应用,包括使用最新推出的空间数据技术、使用Reporting Services设计统计报表、用全文搜索技术对数据库中的二进制文件数据进行搜索以及对SQL Server数据库进行性能监测、分析和优化等。《SQL Server 2008学习笔记:日常维护、深入管理、性能优化》内容丰富、注重实用,理论讲解与大量实验相结合,特别适用于SQL Server数据库管理员和应用程序开发人员,以及对相关技术感兴趣的读者,也可以作为大中专院校或培训机构的相关课程教材。
目录
第一篇 日常应用 1
第1章 安装及常用工具使用 3
1.1 基础知识 4
1.1.1 SQL Server 2008产品概况 4
1.1.2 安装SQL Server 2008的软、硬件需求 4
1.2 应用情景 6
安装SQL Server 2008数据库 6
查看和配置SQL Server服务 14
配置Windows防火墙允许访问SQL Server 2008服务器 15
使用SQL Server Management Studio 16
使用SQL Server Business Intelligence Development Studio 19
SQL Server配置管理器 20
osql实用工具 21
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
使用PRINT语句向客户端返回用户定义的消息 40
使用SET STATISTICS IO语句 41
使用SET STATISTICS TIME语句 42
创建同义词 43
删除同义词 44
从系统视图sys.synonyms 中查询同义词信息 44
创建用户定义数据类型 45
删除用户定义数据类型 47
从INFORMATION_SCHEMA.DOMAINS中获取用户定义数据类型信息 48
查看用户定义数据类型的使用情况 49
练习使用日期和时间函数 50
练习使用数学函数 51
使用SET DATEFORMAT设置日期和时间格式 51
练习使用字符串函数 52
练习使用IF…ELSE语句 53
练习使用WHILE语句 54
练习使用WAITFOR语句 55
练习使用GOTO语句 55
练习使用TRY…CATCH语句 55
查看错误消息 56
使用RAISERROR语句生成错误消息 57
使用sp_addmessage存储过程添加用户定义错误 58
使用sp_altermessage存储过程修改用户定义错误消息 59
使用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
在SQL Server Management Studio中创建数据库 64
在SQL Server Management Studio中查看数据库信息 65
使用SELECT语句查看数据库信息 66
使用sp_helpdb查看数据库信息 67
使用sp_spaceused查看数据库空间使用信息 69
使用简单的CREATE DATABASE语句创建数据库 70
使用CREATE DATABASE语句在创建数据库时指定数据文件 71
在SQL Server Management Studio中创建和使用文件组 72
使用CREATE DATABASE语句在创建数据库时指定文件组 73
使用CREATE DATABASE语句在创建数据库时指定事务日志文件 74
向数据库中添加文件组 75
修改文件组属性 76
删除文件组 76
向数据库中添加文件 76
修改数据库中的文件 77
删除数据库中的文件 78
从系统视图sys.database_files中获取数据文件的信息 79
在SQL Server Management Studio 中扩充数据或事务日志空间 80
在SQL Server Management Studio 中收缩数据或事务日志空间 82
使用DBCC SHRINKDATABASE语句收缩数据库 83
使用DBCC SHRINKFILE语句收缩指定的数据库文件 84
设置自动收缩数据库选项 84
重命名数据库 85
删除数据库 86
查看数据库磁盘使用情况 87
移动用户数据库 87
第4章 表和视图 89
4.1 基础知识 90
4.1.1 表 90
4.1.2 表约束 90
4.1.3 视图 91
4.2 应用情景 92
创建表 92
查看和管理表中的数据 96
查看表的磁盘空间信息 97
使用DBCC CHECKIDENT命令检查和设置表的标识值 97
重命名表 99
修改表的列名 99
向表中添加列 100
修改列属性 100
删除表中的列 101
删除表 101
创建主键约束 102
修改主键约束 104
删除主键约束 104
创建、修改和删除唯一性约束 105
从sys.key_constraints获取约束信息 106
创建检查约束 107
修改检查约束 109
删除检查约束 109
从INFORMATION_SCHEMA.CHECK_CONSTRAINTS获取检查约束信息 109
创建和使用默认约束 110
创建和使用外键约束 111
从sys.foreign_keys获取表中的外键约束 114
从sys.foreign_key_columns获取外键约束的列信息 115
从INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS获取外键约束信息 116
从INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE获取约束信息 117
从INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE获取表中的约束 118
从INFORMATION_SCHEMA.TABLE_CONSTRAINTS获取约束的基本信息 119
从INFORMATION_SCHEMA.KEY_COLUMN_USAGE获取键约束列的信息 120
创建视图 121
修改视图 125
删除视图 125
从INFORMATION_SCHEMA.TABLES中获取表和视图信息 126
从INFORMATION_SCHEMA.VIEWS中获取视图信息 127
从INFORMATION_SCHEMA.COLUMNS中获取列信息 128
从INFORMATION_SCHEMA.VIEW_COLUMN_USAGE获取视图中列的信息 130
从sys.columns中获取列信息 130
从INFORMATION_SCHEMA.VIEW_TABLE_USAGE获取视图中包含表的信息 133
从系统表sys.objects中获取所有数据库对象的信息 134
第5章 规则和索引 135
5.1 基础知识 136
5.1.1 规则 136
5.1.2 索引 136
5.2 应用情景 137
创建规则 138
查看规则 138
绑定规则 139
解除绑定规则 139
删除规则 140
在SQL Server Management Studio中查看索引信息 140
使用sp_helpindex存储过程 141
从系统视图sys.indexes中查询索引信息 142
从系统视图sys.index_columns中查询索引信息 143
从系统视图sys.sysindexkeys中查询索引的键或列信息 145
创建索引 146
创建带包含列的索引 148
修改索引 148
删除索引 149
从系统视图sys.dm_db_index_usage_stats中查询索引操作的信息 149
在SQL Server Management Studio中查看统计信息 151
使用系统视图sys.stats查看统计信息 153
使用系统视图sys.stats_columns查看统计信息中列的信息 154
使用DBCC SHOW_STATISTICS命令查看统计信息的明细信息 155
使用sp_autostats存储过程查看索引自动创建的统计信息 156
创建统计信息 156
修改统计信息 160
删除统计信息 161
使用索引优化数据库查询效率 162
无法使用索引的SELECT语句 164
重新组织和重新生成索引 165
禁用索引 168
使用索引视图 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
创建登录名 177
修改登录名 180
删除登录名 180
获取尝试登录的次数 181
创建用户 181
修改用户 183
删除用户 183
获取当前登录的用户名 183
创建角色 184
管理角色中的用户 186
判断当前用户是否属于指定角色或Windows组 188
修改角色 188
删除角色 189
创建架构 190
修改架构 192
删除架构 193
从系统视图INFORMATION_SCHEMA.SCHEMATA中查询架构信息 193
设置权限 194
从系统视图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
SQL Server对大容量内存的支持 206
手动配置内存选项 207
监测SQL Server内存使用情况 210
监测SQL Server磁盘活动情况 213
获取磁盘读写情况 215
获取数据库文件的I/O统计信息 215
获取I/O工作情况 216
使用系统监测器来监测CPU活动情况 217
使用SQL Server函数查看Server SQL CPU活动情况 217
获取CPU的工作情况 218
线程管理 219
获取网络数据包统计信息 220
第8章 服务器与客户端配置 221
8.1 基础知识 222
8.1.1 SQL Server服务器与客户端结构 222
8.1.2 服务器配置选项 223
8.2 应用情景 224
创建服务器组 224
注册服务器 225
启动、暂停和停止SQL Server 227
配置服务器属性 229
从系统视图sys.configurations中查询服务器配置选项信息 231
使用系统存储过程sp_configure 查询服务器配置选项信息 232
使用系统存储过程sp_configure 修改服务器配置选项 233
配置网络连接 233
配置客户端网络 235
配置ODBC数据源 236
测试客户端的配置 238
第9章 维护数据库 239
9.1 基础知识 240
9.1.1 备份数据库的类型和模式 240
9.1.2 还原数据库的类型 242
9.1.3 数据库快照 242
9.2 应用情景 243
将表中数据导出到文本文件 244
将表中数据导出到Access数据库 249
从文本文件向SQL Server数据库中导入数据 251
从Access数据库中导入数据 255
分离数据库 257
附加数据库 259
在SQL Server Management Studio中创建数据库备份 261
使用BACKUP DATABASE语句备份整个数据库 263
使用BACKUP LOG语句备份数据库中的日志 264
使用存储过程sp_addumpdevice创建逻辑备份设备 264
从系统视图sys.backup_devices中查询备份设备信息 264
实现差异备份 265
部分备份 266
备份指定的文件组或文件 266
仅复制数据库备份 267
在SQL Server Management Studio中还原数据库备份 267
使用RESTORED DATABASE语句还原数据库备份 271
使用RESTORED LOG语句还原数据库日志 271
创建数据库快照 272
查看数据库快照 273
恢复到数据库快照 274
删除数据库快照 274
使用DBCC CHECKALLOC命令检查磁盘空间分配结构的一致性 274
使用DBCC CHECKTABLE命令检查表或索引视图的完整性 275
使用DBCC CHECKCATALOG命令检查数据库内系统表的一致性 276
使用DBCC CHECKDB命令检数据库对象的结构和逻辑完整性 276
使用DBCC SQLPERF命令监视日志空间使用情况 277
第10章 常用数据操纵语言(DML) 278
10.1 基础知识 279
10.1.1 本章的演示数据 279
10.1.2 SELECT语句的基本语法 279
10.2 应用情景 281
最简单的SELECT语句 281
指定要查询的列 281
使用DISTINCT关键字 282
使用TOP n [PERCENT]关键字 283
改变显示的列标题 284
设置查询条件 285
在查询条件中使用BETWEEN关键字 286
在查询条件中使用IN关键字 286
实现模糊查询 287
排序结果集 289
对多列进行排序 290
使用分组统计 291
生成汇总行 293
连接查询 294
在连接查询中对空值的判断 298
一个简单的子查询 299
在子查询中使用聚合函数返回单值 300
IN关键字与返回多值的子查询 301
EXISTS关键字与子查询 302
使用UNION关键字的合并查询 303
使用CAST和CONVERT函数进行类型转换 304
保存查询结果 306
插入数据语句 307
在插入数据时利用默认值 308
修改数据语句 308
修改数据时不允许设置标识列的值 309
修改数据时不允许在惟一性约束列中使用相同的数据 309
修改数据时不能违反检查约束 310
修改数据时不能与绑定到列的规则冲突 310
删除数据语句 310
第二篇 深入管理 313
第11章 使用Reporting Services设计报表 315
11.1 基础知识 316
11.1.1 安装Reporting Services 316
11.1.2 检测组件是否安装成功 319
11.2 应用情景 323
创建和设计报表 324
在报表中对数据进行排序 332
在报表中添加分组 333
向报表中添加总计 335
使用简单的参数 336
设置可用值的参数查询 338
在报表中添加饼图 341
在报表中添加条形图 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
启动事务 355
提交事务 356
回滚事务 356
定义保存点 357
使用SET XACT_ABORT语句 358
嵌套事务 360
使用DBCC OPENTRAN查看当前的活动事务 362
显示锁活动情况 362
设置事务隔离级别选项 365
设置锁超时时间 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
创建存储过程 376
执行不带参数的存储过程 377
带参数的存储过程 378
存储过程的返回值 379
修改和重命名存储过程 380
删除存储过程 382
从INFORMATION_SCHEMA.ROUTINE_COLUMNS中获取存储过程信息 382
系统存储过程 383
创建标量函数 385
创建内联表值函数 386
创建多语句表值函数 387
修改和重命名用户定义函数 389
删除用户定义函数 390
在SQL Server Management Studio中创建触发器 390
使用CREATE TRIGGER语句创建触发器 391
修改触发器 394
使用sp_rename重命名触发器 396
删除触发器 396
从sys.triggers中获取触发器的信息 396
使用存储过程sp_helptext查看触发器的定义文本 398
使用存储过程sp_helptrigger 查看触发器的属性 398
禁用和启用触发器 399
第14章 游标 401
14.1 基础知识 402
14.1.1 什么是游标 402
14.1.2 游标的分类 402
14.2 应用情景 404
声明游标 404
打开游标 406
读取游标数据 406
关闭游标 408
获取游标状态 409
删除游标 410
使用存储过程sp_cursor_lis获取游标属性 411
使用存储过程sp_describe_cursor获取游标属性 413
使用存储过程sp_describe_cursor_columns获取游标属性 414
使用存储过程sp_describe_cursor_tables获取游标的基表 416
修改游标结果集中的行 418
删除游标结果集中的行 418
第15章 全文搜索 420
15.1 基础知识 421
15.1.1 全文搜索的基本概念 421
15.1.2 全文搜索的体系结构 422
15.1.3 使用FILESTREAM技术保存大对象数据 423
15.2 应用情景 423
在SQL Server Management Studio中创建全文目录 423
使用CRAETE FULLTEXT CATALOG语句创建全文目录 424
修改全文目录 425
删除全文目录 426
在表Employees中添加全文搜索列 426
使用全文索引向导创建全文索引 427
使用CRAETE FULLTEXT INDEX语句创建全文索引 432
启用和禁用全文索引 432
删除全文索引 432
查询全文目录的使用情况 433
从sys.fulltext_indexes中查询全文索引的情况 433
从sys.fulltext_index_columns中查询全文索引的情况 434
设置用于全文搜索的FDHOST启动器服务账户 435
使用CONTAINS谓词执行全文搜索 436
使用FREETEXT谓词执行全文搜索 438
启用FILESTREAM 440
创建启用FILESTREAM的数据库 440
创建保存FILESTREAM数据的表 441
使用Transact-SQL管理FILESTREAM数据 442
使用Visual C#语言管理FILESTREAM数据 443
在保存文件数据的列中实现全文搜索 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
在创建表时定义 geometry类型的列 462
向表中插入几何数据 462
从表中获取几何数据 463
获取geometry实例中包含的点 464
获取geometry实例的维度信息 465
检查是否为空 466
判断geometry实例是否简单 467
返回geometry实例的边界 467
检查geometry实例的闭合性 468
确定两个实例是否包含相同的点集 469
确定两个实例是否不相接 469
确定两个实例是否相交 470
确定两个实例是否接触 470
确定两个实例是否重叠 470
确定两个实例是否交叉 471
确定一个实例是否在另外一个实例的内部 471
确定一个实例是否完全包含另外一个实例 471
确定两个几何图形中点之间的最短距离 472
第17章 常用性能监测和优化工具 473
17.1 基础知识 474
17.1.1 常用性能监测和优化工具 474
17.1.2 下载和安装RML分析工具 474
17.2 应用情景 476
使用SQL Server Profiler记录数据库的跟踪数据 476
筛选跟踪数据 480
重播跟踪 481
实用SQL Server Profiler定位和分析问题 484
使用数据库引擎优化顾问分析数据库性能 485
数据库引擎优化顾问中的优化选项 491
数据库引擎优化顾问的应用建议 492
使用dta实用工具 493
ReadTrace实用工具 494
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
控制SELECT语句中行和列的数量 510
慎用DISTINCT关键字 513
慎用UNION关键字 515
判断表中是否存在记录 518
连接查询的优化 518
使用INSERT INTO…SELECT语句优化批量插入操作 520
优化修改和删除语句 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
使用向导创建分区表 532
查询普通表与分区表的比较 538
使用CREATE PARTITION FUNCTION语句创建分区函数 539
使用DROP PARTITION FUNCTION语句删除分区函数 541
使用CREATE PARTITION SCHEME语句创建分区方案 541
使用DROP PARTITION SCHEME语句删除分区方案 542
创建分区表 542
创建分区索引 543
查看分区表明细信息 544
拆分和合并分区 546
分区中的数据移动 546
创建分区视图 548
在分区视图中修改数据 553
从系统表sys.data_spaces中获取数据空间信息 554