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章 安装及常用工具使用 31.1 基础知识 41.1.1 SQL Server 2008产品概况 41.1.2 安装SQL Server 2008的软、硬件需求 41.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 19SQL Server配置管理器 20osql实用工具 21sqlcmd实用工具 22第2章 Transact-SQL语言 242.1 基础知识 252.1.1 Transact-SQL的语法元素 252.1.2 数据库对象的命名 262.1.3 同义词 272.1.4 数据类型 272.1.5 常量 312.1.6 变量 322.1.7 运算符 332.1.8 常用函数 352.1.9 流程控制语句 382.1.10 Transact-SQL语句的解析、编译和执行 402.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章 数据库管理 603.1 基础知识 613.1.1 系统数据库 613.1.2 数据库文件 613.1.3 文件组 623.1.4 页和区 633.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章 表和视图 894.1 基础知识 904.1.1 表 904.1.2 表约束 904.1.3 视图 914.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章 规则和索引 1355.1 基础知识 1365.1.1 规则 1365.1.2 索引 1365.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章 数据库安全管理 1726.1 基础知识 1736.1.1 SQL Server登录 1736.1.2 SQL Server系统用户 1746.1.3 角色的概念 1746.1.4 权限概述 1766.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硬件管理和配置 2027.1 基础知识 2037.1.1 Windows内存管理 2037.1.2 优化Windows内存性能 2047.1.3 优化SQL Server服务器的磁盘性能 2057.2 应用情景 206SQL 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章 服务器与客户端配置 2218.1 基础知识 2228.1.1 SQL Server服务器与客户端结构 2228.1.2 服务器配置选项 2238.2 应用情景 224创建服务器组 224注册服务器 225启动、暂停和停止SQL Server 227配置服务器属性 229从系统视图sys.configurations中查询服务器配置选项信息 231使用系统存储过程sp_configure 查询服务器配置选项信息 232使用系统存储过程sp_configure 修改服务器配置选项 233配置网络连接 233配置客户端网络 235配置ODBC数据源 236测试客户端的配置 238第9章 维护数据库 2399.1 基础知识 2409.1.1 备份数据库的类型和模式 2409.1.2 还原数据库的类型 2429.1.3 数据库快照 2429.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) 27810.1 基础知识 27910.1.1 本章的演示数据 27910.1.2 SELECT语句的基本语法 27910.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在子查询中使用聚合函数返回单值 300IN关键字与返回多值的子查询 301EXISTS关键字与子查询 302使用UNION关键字的合并查询 303使用CAST和CONVERT函数进行类型转换 304保存查询结果 306插入数据语句 307在插入数据时利用默认值 308修改数据语句 308修改数据时不允许设置标识列的值 309修改数据时不允许在惟一性约束列中使用相同的数据 309修改数据时不能违反检查约束 310修改数据时不能与绑定到列的规则冲突 310删除数据语句 310第二篇 深入管理 313第11章 使用Reporting Services设计报表 31511.1 基础知识 31611.1.1 安装Reporting Services 31611.1.2 检测组件是否安装成功 31911.2 应用情景 323创建和设计报表 324在报表中对数据进行排序 332在报表中添加分组 333向报表中添加总计 335使用简单的参数 336设置可用值的参数查询 338在报表中添加饼图 341在报表中添加条形图 344第12章 事务与锁 34712.1 基础知识 34812.1.1 事务的概念和特性 34812.1.2 事务的分类 34912.1.3 事务的并发 34912.1.4 锁定机制 34912.1.5 锁的兼容性 35012.1.6 事务中不允许使用的SQL语句 35112.1.7 锁的粒度和层次结构 35212.1.8 产生死锁的原因 35212.1.9 尽量减少死锁 35412.2 应用情景 355启动事务 355提交事务 356回滚事务 356定义保存点 357使用SET XACT_ABORT语句 358嵌套事务 360使用DBCC OPENTRAN查看当前的活动事务 362显示锁活动情况 362设置事务隔离级别选项 365设置锁超时时间 371第13章 存储过程、函数和触发器 37213.1 背景知识 37313.1.1 什么是存储过程 37313.1.2 什么是用户定义函数 37313.1.3 触发器的基本概念 37413.1.4 inserted和deleted表 37513.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章 游标 40114.1 基础知识 40214.1.1 什么是游标 40214.1.2 游标的分类 40214.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章 全文搜索 42015.1 基础知识 42115.1.1 全文搜索的基本概念 42115.1.2 全文搜索的体系结构 42215.1.3 使用FILESTREAM技术保存大对象数据 42315.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章 使用空间数据 45516.1 基础知识 45616.1.1 空间数据类型 45616.1.2 Point类型 45616.1.3 MultiPoint类型 45716.1.4 LineString类型 45816.1.5 MultiLineString类型 45816.1.6 Polygon类型 45916.1.7 MultiPolygon类型 46016.1.8 GeometryCollection类型 46116.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章 常用性能监测和优化工具 47317.1 基础知识 47417.1.1 常用性能监测和优化工具 47417.1.2 下载和安装RML分析工具 47417.2 应用情景 476使用SQL Server Profiler记录数据库的跟踪数据 476筛选跟踪数据 480重播跟踪 481实用SQL Server Profiler定位和分析问题 484使用数据库引擎优化顾问分析数据库性能 485数据库引擎优化顾问中的优化选项 491数据库引擎优化顾问的应用建议 492使用dta实用工具 493ReadTrace实用工具 494OSTRESS实用工具 501第18章 对SQL语句进行分析和优化 50318.1 基础知识 50418.1.1 影响查询语句执行性能的常见因素 50418.1.2 如何定位导致查询运行慢的原因 50418.1.3 使用SET STATISTICS IO语句检查查询所产生的I/O操作 50518.1.4 使用SET STATISTICS TIME语句检查查询使用的时间和CPU使用情况 50618.1.5 查看执行计划 50718.1.6 准备演示数据 50918.2 应用情景 510控制SELECT语句中行和列的数量 510慎用DISTINCT关键字 513慎用UNION关键字 515判断表中是否存在记录 518连接查询的优化 518使用INSERT INTO…SELECT语句优化批量插入操作 520优化修改和删除语句 522第19章 数据库分区技术 52319.1 基础知识 52419.1.1 分区技术的分类 52419.1.2 分区表 52519.1.3 确定分区依据列和分区数 52719.1.4 创建文件组 52819.1.5 设计分区视图 53119.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 上一篇: Rootkit:系统灰色地带的潜伏者(原书第二版) 下一篇: Photoshop CS5从新手到高手