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.1SQL 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