SQL Server 2008 数据库应用与开发 第 1/100 页
第 3 章创建和管理数据库 内容提要 1 2 3 4 5 数据库对象和数据库文件用户数据库创建与修改管理数据库文件组的创建数据库快照和数据分区管理 第 2/100 页
第 3 章习题作业 实验 习题 3 1. 选择题 2. 思考题 :(2) (5) 3. 上机练习题 :(1) (3) (5) 实验 1. (P145) 实验 2 第 3/100 页
SQL Server 2008 将数据保存于数据库中, 并为用户提供了访问这些数据的接口 数据库所存储的信息能否正确地反映现实世界, 能否在系统运行过程中及时 准确地为各个应用程序提供所需的数据, 关系到以此数据库为基础的应用系统的性能 第 4/100 页
1. 基本概念 数据库对象和数据库文件 数据库对象 :SQL Server 2008 将数据库映射为一组磁盘文件, 并将数据与日志信息分别保存于不同的磁盘文件中, 每个文件仅在与之相关的数据库中使用 因此, 从物理角度看, 数据库包括数据文件和日志文件 从逻辑角度看, 数据库中的表 索引 触发器 视图 键 约束 默认值 规则 用户定义数据类型或存储过程及数据库本身, 都可以理解为数据库对象 第 5/100 页
1. 基本概念 数据库对象和数据库文件 数据库所有者 : 就是有权限访问数据库的用户, 即登录数据库的网络用户 数据库所有者是唯一的, 拥有该数据库中的全部权限, 并能够提供给其他用户访问权限和功能 架构 : 架构是形成单个命名空间的数据库实体的集合 命名空间是一个集合, 其内部的每个元素的名称都是唯一的 在 SQL Server 2008 中的默认架构是 DBO 如果用户创建数据库时没有指定架构, 系统将使用默认架构 第 6/100 页
数据库对象和数据库文件 1. 基本概念 数据库文件 : 每个 SQL Server 2008 数据库至少具有两个操作系统文件 : 一个主数据文件和一个日志文件 数据文件包含数据和数据库对象, 日志文件包含恢复数据库中的所有事务所需的信息 (1) 主数据文件包含数据库的启动信息, 并指向数据库中的其他文件 用户数据和对象可存储在此文件中, 也可以存储在次要数据文件中 每个数据库有一个主要数据文件, 建议文件扩展名是.mdf 第 7/100 页
数据库对象和数据库文件 1. 基本概念 数据库文件 : (2) 次要数据文件是可选的, 由用户定义并存储用户数据 通过将每个文件放在不同的磁盘驱动器上, 次要文件可用于将数据分散到多个磁盘上, 建议文件扩展名是.ndf (3) 事务日志文件保存用于恢复数据库的日志信息 每个数据库必须至少有一个日志文件, 建议文件扩展名是.ldf 第 8/100 页
数据库对象和数据库文件 2. 创建数据库的规范 创建规范数据库的原则 : 一个数据库中的表是由许多行组成的, 每个行又由多个列组成, 表中要存储的信息, 决定该表所包含列的属性 (1) 列的唯一性 (2) 列的无关性 (3) 使用主键 (4) 外键 (5) 收集所需的全部信息 (6) 以最小的逻辑单位存储信息 第 9/100 页
数据库对象和数据库文件 2. 创建数据库的规范 如何检查数据库的规范化 (1) 列信息 : 是否遗忘了必要的列? 是否有需要的信息没包括进去? (2) 主键 : 是否为每个表选择了合适的主键? 在使用该主键查找具体行的数据时, 它是否很容易记忆和键入? (3) 重复信息 : 是否在某个表中重复输入了同样的信息? (4) 是否存在一个列很多而行却很少的表, 而且许多行中的列值为空? 如果有, 就要考虑重新设计该表 确定了要做的修改之后, 就可以修改表的信息, 改进设计方案 第 10/100 页
数据库对象和数据库文件 3. 数据库的存储 SQL Server 2008 数据库是以文件的方式存储到磁盘中, 其中数据文件和日志文件的文件结构不同, 存储方式也不一样, 如图 3-1 所示 图 3-1 数据的存储方式 第 11/100 页
3. 数据库的存储 数据库对象和数据库文件 数据文件的存储结构 : 从 SQL Server 2008 数据库的物理架构上来看,SQL Server 用于存储数据的基本单位是页, 每页容量为 8KB 也就是说数据库对应磁盘文件在逻辑上可以被划分为多个页 (1) 数据页 SQL Server 将 8KB 的数据划分为一页 (2) 扩展盘区 (Extents) 数据页是 SQL Server 数据库读写数据的基本单位, 扩展盘区就是管理存储空间的基本单位 一个扩展盘区由 8 个物理上连续的页 (64 KB) 组成 第 12/100 页
数据库对象和数据库文件 3. 数据库的存储 日志文件的存储结构 :SQL Server 数据库提供的日志功能可以记录数据行从数据库创建到当前时刻对数据库所做的全部更改 针对数据库中任何一行执行的操作都将被作为一个日志行, 并在事务提交时写入日志文件中 SQL Server 2008 中的事物日志功能一般用于恢复指定事务, 还原的数据库 文件 文件组或页前滚至故障点, 支持事务性复制和备份服务器解决方案, 实现在 SQL Server 启动时恢复所有未完成的事务 第 13/100 页
数据库对象和数据库文件 3. 数据库的存储 日志文件的存储结构 (1)SQL Server 数据库日志的物理结构 日志文件并不包括在文件组内,SQL Server 2008 的日志文件中包含着一系列日志行 (2)SQL Server 数据库日志的逻辑结构 SQL Server 2008 数据库中的事务日志以日志行为单位 每条日志行是由一个日志序列号 (Log Sequence Num,LSN) 标识 (3)SQL Server 2008 将数据库的回滚操作也放到日志中 第 14/100 页
用户数据库创建与修改 一个 SQL Server 实例, 可以创建 32000 多个用户数据库 在创建数据库之前, 首先用户应该清楚是否有相关的权限 要创建数据库, 必须至少拥有 CREATE DATABASE CREATE ANY DATABASE 或 ALTER ANY DATABASE 等语句的权限 其次, 创建数据库的用户将成为该数据库的所有者 第 15/100 页
用户数据库创建与修改 1. 用户数据库的创建 在 SQL Server 中, 用户要创建数据库, 必须确定数据库的名称 所有者 大小以及存储该数据库的文件和文件组 数据库名称必须遵循为标识符指定的规则 (1) 数据库名称长度为 1~128 个字符 (2) 名称首字符必须是一个英文字母或 _ # 和 @ 中的任意字符 (3) 在中文版 SQL Server 2008 中, 可以直接使用汉字为数据库命名 (4) 名称中不能出现空格, 不允许使用 SQL Server 2008 的保留字 第 16/100 页
用户数据库创建与修改 1. 用户数据库的创建 在 SQL Server Management Studio 中创建数据库 (1) 启动 SQL Server Management Studio, 在对象资源管理器中, 右击 数据库 选项, 在弹出的快捷菜单中选择 新建数据库 命令, 如图 3-2 所示, 打开 新建数据库 窗口 第 17/100 页
用户数据库创建与修改 图 3-2 新建数据库 第 18/100 页
用户数据库创建与修改 1. 用户数据库的创建 在 SQL Server Management Studio 中创建数据库在 新建数据库 窗口中的 常规 选项卡, 如图 3-3 所示 第 19/100 页
用户数据库创建与修改图3-3 设置 常规 选项卡第 20/100 页
用户数据库创建与修改 1. 用户数据库的创建 在 SQL Server Management Studio 中创建数据库 (2) 切换到 新建数据库 窗口中的 选项 选项卡中, 如图 3-4 所示 其中有以下几个可选项 第 21/100 页
用数据库创建与修改户图 3-4 设置 选项 选项卡 第 22/100 页
用户数据库创建与修改 1. 用户数据库的创建 在 SQL Server Management Studio 中创建数据库 (3) 切换到 文件组 选项卡进行设置, 如图 3-5 所示 (4) 如果要添加文件组, 可以单击 添加 按钮, 然后输入文件组的名称 所有参数设置完毕后, 单击 确定 按钮, 新的数据库就创建成功 展开对象资源管理器中的数据库项, 就可以观察到 test01 数据库已经创建成功 第 23/100 页
用户数据库创建与修改 图 3-5 设置 文件组 选项卡 第 24/100 页
用户数据库创建与修改 1. 用户数据库的创建 利用 Transact-SQL 语句创建数据库 在 SQL Server 2008 中, 也可以利用 Transact- SQL 提供的 CREATE DATABASE 语句来创建数据库 创建步骤为 : 选择 文件 新建 使用当前连接查询 命令, 弹出查询设计器窗口, 在该窗口中编写 Transact-SQL 语句 第 25/100 页
用户数据库创建与修改 (1)CREATE DATABASE 语句的基本格式 CREATE DATABASE database_name -- 设置数据库名称 [ ON -- 设置数据文件 [ PRIMARY ] [ <filespec> [,...n ] [, <filegroup> [,...n ] ] -- 设置文件组 [ LOG ON { <filespec> [,...n ] } ] -- 设置日志文件 [ COLLATE collation_name ] -- 设置排序规则名称 [ WITH <external_access_option> ] -- 设置外部访问 ] [;] 第 26/100 页
用户数据库创建与修改 1. 用户数据库的创建 利用 Transact-SQL 语句创建数据库 例 3.1 创建数据库 student, 并指定数据库的数据文件所在位置 初始容量 最大容量和文件增长量 程序代码如下 : CREATE DATABASE student ON ( NAME='student', FILENAME = 'D:\sqlprogram\student.mdf', SIZE = 5MB, MAXSIZE = 10MB, FILEGROWTH = 5% ) GO 第 27/100 页
用户数据库创建与修改 例 3.2 创建数据库 teaching, 并指定数据库的数据文件和日志文件的所在位置 初始容量 最大容量和文件增长量 程序代码如下 : 第 28/100 页
用户数据库创建与修改 CREATE DATABASE teaching ON PRIMARY ( NAME = 'teaching', FILENAME = 'D:\sqlprogram\teaching.mdf', SIZE = 4MB, MAXSIZE = 30MB, FILEGROWTH = 1MB ) LOG ON ( NAME = 'teaching_log', FILENAME = 'D:\sqlprogram\teaching_log.ldf', SIZE = 2MB, MAXSIZE = 10 MB, FILEGROWTH = 10%) COLLATE Chinese_PRC_CI_AS GO 第 29/100 页
用户数据库创建与修改 2. 修改数据库 使用 SQL Server Management Studio 修改数据库 主要步骤如下 : (1) 启动 SQL Server Management Studio, 在对象资源管理器中, 用户可以右击所选择的数据库 test01, 在弹出的快捷菜单中选择 属性 命令打开 数据库属性 窗口, 如图 3-6 所示 在 数据库属性 窗口的 常规 选项卡中, 显示的是数据库的基本信息, 这些信息不能修改 第 30/100 页
用户数据库创建与修改图 3-6 数据库属性 窗口 第 31/100 页
用户数据库创建与修改 2. 修改数据库 使用 SQL Server Management Studio 修改数据库 主要步骤如下 : (2) 单击 文件 选项卡, 如图 3-7 所示, 可以修改数据库的逻辑名称 初始大小 自动增长等属性, 也可以根据需要添加数据文件和日志文件, 还可以更改数据库的所有者 第 32/100 页
用户数据库创建与修改图 3-7 修改 数据库属性 第 33/100 页
用户数据库创建与修改 2. 修改数据库 使用 SQL Server Management Studio 修改数据库 主要步骤如下 : (3) 在 文件组 选项卡中, 可以修改现有的文件组, 也可以指定数据库的默认文件组 添加新文件组 (4) 在 选项 选项卡中, 修改数据库的排序规则 数据库属性 窗口包含的各种属性, 只要需要, 就可以选择相应的选项卡来修改 第 34/100 页
用户数据库创建与修改图 3-8 添加数据库文件 第 35/100 页
2. 修改数据库 用户数据库创建与修改 使用 Transact-SQL 语句修改数据库 : Transact-SQL 提供了修改数据库的语句 ALTER DATABASE ALTER DATABASE database_name -- 需修改的数据库名 [ <add_or_modify_files> -- 增加或修改数据库文件 <add_or_modify_filegroups> -- 增加或修改数据库文件组 <set_database_options -- 设置数据库选项 MODIFY NAME = new_database_name -- 数据库重命名 COLLATE collation_name -- 更改排序规则 ] [;] 第 36/100 页
用户数据库创建与修改 2. 修改数据库 使用 Transact-SQL 语句修改数据库 例 3.3 为 student 数据库增加一个日志文件 ALTER DATABASE student ADD LOG FILE ( NAME= stud_log, FILENAME='F:\sqlprogram\stud_log.LDF', SIZE=2 MB, MAXSIZE=6 MB, FILEGROWTH=1MB ) 第 37/100 页
用户数据库创建与修改 例 3.4 修改 student 数据库的排序规则 程序代码如下 : ALTER DATABASE student COLLATE Chinese_PRC_CI_AS_KS 第 38/100 页
用户数据库创建与修改 例 3.5 给 student 数据库添加文件组 studentfgrp, 再添加数据文件 studentfile.ndf 到文件组 studentfgrp 中 程序代码如下 : ALTER DATABASE student ADD FILEGROUP studentfgrp GO ALTER DATABASE student ADD FILE ( NAME ='studentfile', FILENAME = 'F:\sqlprogram\studentfile.ndf ' ) TO FILEGROUP studentfgrp GO 第 39/100 页
用户数据库创建与修改 3. 数据库文件的脚本生成 创建对象的脚本代码 在 SQL Server 中, 要对数据库对象执行基本操作时, 通常需要编写 SQL 脚本 对于常见数据库对象的基本操作,SQL Server 提供了快速生成操作脚本的功能 第 40/100 页
用户数据库创建与修改 图 3-9 创建脚本代码 第 41/100 页
用户数据库创建与修改 3. 数据库文件的脚本生成 创建对象的脚本代码系统将打开一个新查询编辑器窗口, 执行连接并显示完整 CREATE DATABASE 的语句 结果如图 3-10 所示 第 42/100 页
用户数据库创建与修改 图 3-10 自动生成的查询脚本 第 43/100 页
用户数据库创建与修改 3. 数据库文件的脚本生成 创建对象的脚本代码 在数据库及其对象的许多对话框的操作过程中, 通过单击 脚本 按钮, 也可以得到当前操作的脚本, 具体操作如图 3-11 所示 图 3-11 脚本 按钮的使用 第 44/100 页
用户数据库创建与修改 3. 数据库文件的脚本生成 使用模板创建脚本代码 (1) 在 Management Studio 的 查看 菜单上, 单击 模板资源管理器 命令 (2) 模板资源管理器中的模板是分组列出的, 先展开 SQL Server 模板 DATABASE, 子目录, 再双击 CREATE DATABASE (3) 在 连接到数据库引擎 对话框中, 填写连接信息, 再单击 连接 按钮 此时将打开一个新查询编辑器窗口, 其中包含 创建数据库 模板的内容, 第 45/100 页
用户数据库创建与修改 3. 数据库文件的脚本生成 使用模板创建脚本代码 (4) 单击菜单 查询 指定模板参数的值 菜单命令, 弹出 指定模板参数的值 对话框, 如图 3-12 所示 (5) 在 指定模板参数的值 对话框中, 值 列包含一个 Database_Name 参数的建议值 在 值 参数框中, 输入 test02, 再单击 确定 按钮 (6) 系统自动用输入的 test02 替代了上述参数值 <Database_Name, sysname, Database_Name> 第 46/100 页
用户数据库创建与修改 图 3-12 指定模板参数的值 第 47/100 页
管理数据库 1. 查看数据库状态信息 在实际生产过程中的数据库总是处于一个特定的状态中, 若要确认数据库的当前状态, 通过 数据库属性 窗口的 常规 选项卡查看数据库属性以外, 还可以选择 sys.databases 目录视图中的 state_desc 列 在查询设计器窗口中输入如下代码并执行, 如图 3-13 所示 Select name,state,state_desc From sys.databases 第 48/100 页
管理数据库 图 3-13 数据库的状态信息 第 49/100 页
1. 查看数据库状态信息 管理数据库 在 SQL Server 2008 中, 数据库文件的状态独立于数据库的状态 如果数据库处于离线状态, 则可以从 sys.master_files 目录视图中查看文件的状态 如图 3-14 所示 可以在查询设计器窗口中输入如下代码并执行, 即可查看到相关数据文件的状态信息 Select name,physical_name,type,type_desc,state, state_desc From sys.master_files 第 50/100 页
管理数据库 图 3-14 数据库文件的状态信息 第 51/100 页
1. 查看数据库状态信息 数据库状态含义 管理数据库 ONLINE 表示可以对数据库进行访问 OFFLINE 表示数据库无法使用 RESTORING 表示正在还原主文件组的一个或多个文件, 或正在离线还原一个或多个辅助文件, 此时数据库不可用 RECOVERING 表示正在恢复数据库 第 52/100 页
管理数据库 1. 查看数据库状态信息 数据库状态含义 ECOVERY PENDING 表示 SQL Server 在恢复过程中遇到了与资源相关的错误, 数据库未损坏, 但是可能缺少文件, 或系统资源限制可能导致无法启动数据库 此时数据库不可用 SUSPECT 表示至少主文件组可疑或可能已损坏 EMERGENCY 表示用户更改了数据库, 并将其状态设置为 EMERGENCY 数据库处于单用户模式, 可以修复或还原 第 53/100 页
管理数据库 1. 查看数据库状态信息 数据库文件状态含义 ONLINE 表示文件可用于所有操作 如果数据库本身处于在线状态, 则主文件组中的文件始终处于在线状态 OFFLINE 表示文件不可访问, 并且可能不显示在磁盘中 文件通过显式用户操作变为离线, 并在执行其他用户操作之前保持离线状态 第 54/100 页
管理数据库 1. 查看数据库状态信息 数据库文件状态含义 RESTORING 表示正在还原文件 RECOVERY PENDING 表示文件恢复被推迟 SUSPECT 表示在线还原过程中, 恢复文件失败 如果文件位于主文件组, 则数据库还将标记为可疑 否则, 仅文件处于可疑状态, 而数据库仍处于在线状态 DEFUNCT 表示当文件不处于在线状态时被删除 第 55/100 页
管理数据库 2. 数据库的属性设置 数据库更名 : 一种方法是 SQL ServerManagement Studio 中选中此数据库, 右击鼠标, 在弹出的快捷菜单中选择 重命名 或者直接利用 ALTER DATABASE 命令来实现 另一种方法是使用系统存储过程 sp_renamedb 更改数据库的名称 在重命名数据库之前, 应该确保没有用户正在使用该数据库 系统存储过程 sp_renamedb 语法如下 : sp_renamedb [@dbname=]'old_name,[@newname=]'new_name' 例 3.6 将名为 student 数据库改名为 STUDENTDB 第 56/100 页
2. 数据库的属性设置 管理数据库 限制用户对数据库的访问 : 在 SQL Server 2008 的运行过程中, 有时需要限制用户的访问, 例如, 在数据库 test01 的 数据库属性 对话框中选择 选项 选项卡, 选择 状态 限制访问 下拉框, 出现 3 个选项 1 Multiple: 数据库处于正常生产状态, 允许多个用户同时访问数据库 2 Single: 指定一次只能一个用户访问, 其他用户的连接被中断 3 Restricted: 限制除 db_ower( 数据库所有者 ) dbcreator ( 数据库创建者 ) 和 sysadmin( 系统管理员 ) 以外的角色成员访问数据库, 但对数据库的连接不加限制 一般在维护数据库时, 将数据库设置为该状态 第 57/100 页
管理数据库 2. 数据库的属性设置 修改数据库的排序规则 (1) 了解排序规则的含义 以 Chinese_PRC_CS_AI_WS 为例, 该规则可以分成两部分来理解 前半部分指排序规则所支持的字符集, 如 Chinese_PRC_ 表示对简体字 UNICODE 的排序规则, 而后半部分常见的组合的含义如下 1 _BIN: 二进制排序 2 _CI(CS): 是否区分大小写,CI 不区分,CS 区分 3 _AI(AS): 是否区分重音,AI 不区分,AS 区分 4 _KI(KS): 是否区分假名类型,KI 不区分,KS 区分 5 _WI(WS): 是否区分宽度,WI 不区分,WS 区分 (2) 排序规则的层次 SQL Server 2008 的排序规则分为 3 个层次 : 服务器排序规则 数据库排序规则和表的排序规则 第 58/100 页
管理数据库 2. 数据库的属性设置 更改数据库所有者 (1) 在数据库属性窗体中选择 文件 选项卡, 然后单击 所有者 文本框后面的 按钮, 则会弹出 选择数据库所有者 对话框, 如图 3-17 所示 第 59/100 页
管理数据库 图 3-17 选择数据库所有者 第 60/100 页
2. 数据库的属性设置 更改数据库所有者 管理数据库 (2) 单击 浏览 按钮, 则会弹出 查找对象 对话框, 如图 3-18 所示 (3) 在 匹配的对象 列表框中选择数据库所有者, 单击 按钮即可实现更改数据库所有者的操作 第 61/100 页
管理数据库 图 3-18 查找数据库所有者对象 第 62/100 页
管理数据库 3. 估算数据库大小 影响数据库大小的因素要估计数据库的大小, 需要考虑如下一些因素 1 model 数据库和系统表的大小, 包括预测到的增长 2 表中数据的总量, 包括预测到的增长 3 索引的数量和大小, 特别是键值的大小. 4 影响事务日志大小的因素, 更改活动的总量和频率, 每一个事务的大小以及备份日志的频率 5 系统表的大小 第 63/100 页
管理数据库 3. 估算数据库大小 估计表中数据的总量 在确定分配给数据库的空间大小后, 应该估计表中数据的总量, 具体可以采用如下方法 1 通过统计每列包含的字节数, 计算 1 行的字节数量 对于列中定义为可变长度, 可以采用取平均值的方法估算 2 确定平均每一个数据页包含行的数目 即用 8060 除以 1 行的字节数, 取整即可得到结果 3 表中行的近似数目除以一个数据页包含的行数, 结果就是需要存储到表中的页数 第 64/100 页
4 收缩数据库 管理数据库 在 SQL Server 2008 中当为数据库分配的磁盘空间过大时, 可以收缩数据库, 以节省存储空间 数据文件和事务日志文件都可以进行收缩 数据库也可设置为按给定的时间间隔自动收缩 设置自动收缩数据库 : 设置数据库的自动收缩, 可以在数据库的属性中 选项 选项卡页面中设置, 只要将选项中的 自动收缩 设为 True 即可 第 65/100 页
4 收缩数据库 手动收缩数据库 管理数据库 手动收缩用户数据库的步骤 (1) 在 SQL Server Management Studio 中, 右击相应的数据库, 如 test01, 从弹出的快捷菜单中依次选择 任务 收缩 数据库 命令 (2) 在弹出的对话框中进行设置, 如图 3-19 所示 数据库 test01 的当前分配空间为 17MB, 设置收缩后的最大空间为 45%, 单击 确定 按钮, 即可完成操作 系统将根据数据库的具体情况对数据库进行收缩 第 66/100 页
管理数据库图3-19 设置收缩数据库第 67/100 页
管理数据库 4 收缩数据库 手动收缩数据库 手动收缩用户数据库的步骤 (3) 如果单击 脚本 按钮, 系统还能够将收缩操作的脚本显示到 新建查询 界面中, 结果如下 USE [test01] GO DBCC SHRINKDATABASE(N'test01', 47 ) GO 第 68/100 页
4 收缩数据库 手动收缩数据库文件 管理数据库 (1) 在 SQL Server Management Studio 中, 右击相应的数据库, 如 test01, 从弹出的快捷菜单中选择 任务 收缩 文件 命令 (2) 在弹出的对话框中进行设置, 如图 3-20 所示 数据库 test01 的数据文件当前分配空间为 15MB, 设置收缩数据库文件参数, 单击 确定 按钮, 即可完成操作 第 69/100 页
管理数据库图3-20 收缩数据库文件第 70/100 页
管理数据库 5. 分离和附加用户数据库 分离用户数据库 (1) 在 SQL Server Management Studio 中, 右击相应的数据库, 如 test02, 从弹出的快捷菜单中依次选择 任务 分离 命令 (2) 在弹出的对话框中进行设置, 如图 3-21 所示 设置数据库 test02 的分离参数, 单击 确定 按钮, 即可完成操作 第 71/100 页
管理数据库图3-21 分离数据库第 72/100 页
管理数据库 5. 分离和附加用户数据库 附加数据库 : 附加数据库可以将已经分离的数据库重新附加到当前或其他 SQL Server 2008 的实例 (1) 在 SQL Server Management Studio 中, 右击 对象资源管理器 中 数据库, 从弹出的快捷菜单中选择 附加 命令 (2) 在弹出的 附加数据库 对话框中, 单击 添加 按钮, 在弹出的 数据库定位文件 界面中, 选择要添加的数据库的主数据文件, 如图 3-22 所示第 73/100 页
管理数3-22 定位数据库库图据第 74/100 页
管理数据库 5. 分离和附加用户数据库 附加数据库 : (3) 单击 确定 按钮, 返回 附加数据库 对话框 如图 3-23 所示 单击 确定 按钮, 数据库 test02 就附加到当前的实例中了 第 75/100 页
管理数据库图3-23 附加数据库第 76/100 页
管理数据库 6. 联机和脱机用户数据库 脱机用户数据库 (1) 在 SQL Server Management Studio 中, 右击相应的数据库, 如 test02, 从弹出的快捷菜单中依次选择 任务 脱机 命令 弹出如图 3-24 所示的对话框 (2) 完成脱机过程后, 单击 关闭 按钮 系统中将数据库标注为脱机数据库 第 77/100 页
管理数据库 图 3-24 脱机数据库 第 78/100 页
管理数据库 6. 联机和脱机用户数据库 联机用户数据库 (1) 在 SQL Server Management Studio 中, 右击已经脱机的数据库, 从弹出的快捷菜单中依次选择 任务 联机 弹出如图 3-25 所示的对话框 (2) 完成联机过程后, 单击 关闭 按钮, 系统中将数据库恢复原样 第 79/100 页
管理数据库 图 3-25 联机数据库 第 80/100 页
7. 删除数据库 管理数据库 使用 SQL Server Management Studio 删除数据库 启动 SQL Server Management Studio 界面, 连接到本地数据库默认实例 在对象资源管理器中, 展开树形目录, 定位到要删除的数据库, 右击该数据库, 再选择 删除 命令即可 使用 Transact-SQL 语句删除数据库 Transact-SQL 提供了数据库修改语句 DROP 例 3.7 删除已创建的数据库 student 程序代码如下 : DROP DATABASE student GO 第 81/100 页
文件组的创建 文件组是指将数据库相关的一组磁盘文件组成的集合 SQL Server 2008 在创建数据库时会自动创建一个的主文件组, 用户也可根据自己的需要自定义一个文件组 文件组的类型 (1) 主文件组 : 主文件组包含主数据文件和任何没有明确分配给其他文件组的其他文件 系统表的所有页均分配在主文件组中 (2) 用户定义文件组 : 第 82/100 页
创建文件组的必要性 文件组的创建 (1) 对于大型数据库, 可把特定的对象或文件分配到不同磁盘上, 将数据库文件组织成用户文件组 (2) 文件组可以帮助数据库管理人员执行相应的数据布局, 以及某些管理任务 (3) 利用文件组, 可以在特定的文件中定位特定的对象, 以提高磁盘驱动器的效率, 减少磁盘驱动器的争用 (4) 通过创建用户文件组, 可以将数据文件集合起来, 以便于管理 数据分配和放置 第 83/100 页
创建用户文件组 文件组的创建 (1) 在 SQL Server Management Studio 中创建用户文件组 例如, 为数据库 test01 添加了一个名为 userdefined01 的文件组 第 84/100 页
文件组文件组的创建图3-27 添加一个名为userdefined01 的第 85/100 页
创建用户文件组 文件组的创建 (2) 使用相应的 Transact-SQL 命令 可以创建一个名为 userdefined02 的文件组 USE test01 GO ALTER DATABASE test01 ADD FILEGROUP userdefined02 GO 第 86/100 页
文件组的创建 设置默认文件组 设置默认文件组有两种方法 : (1) 在 SQL Server Management Studio 界面中, 参考图 3-27, 在 默认值 下的复选框中可以指定默认文件组, 然后单击 确定 按钮即可 (2) 使用 ALTER DATABASE 语句更改默认文件组 具体方法可以参考下面例 3.8 内容 第 87/100 页
文件组的创建 例 3.8 文件和文件组示例 在 SQL Server 2008 实例上创建了一个数据库, 该数据库包括一个主数据文件 一个用户定义文件组和一个日志文件 主数据文件在主文件组中, 而用户定义文件组包含两个次要数据文件 ALTER DATABASE 语句将用户定义文件组指定为默认文件组 第 88/100 页
数据库快照和数据分区管理 1. 数据库快照 (Snapshot) 数据库快照是 Microsoft SQL Server 2008 中的新增功能, 是源数据库的只读 静态视图 多个快照可以位于一个源数据库中, 并且可以作为数据库始终驻留在同一服务器实例上 数据库快照的工作方式 : 数据库快照为数据库用户提供了一种保存某一历史时刻的数据库中数据的机制 例如, 在某一天的 12:00 对数据库 test01 创建快照, 该数据库用户就可以在以后的任何时间访问那一刻 test01 数据库中的数据 第 89/100 页
数据库快照和数据分区管理 1. 数据库快照 (Snapshot) 数据库快照的工作方式 : 要访问快照数据, 系统将以如下原则进行读取数据 1 数据未变化, 查询源数据库的信息 2 数据发生变化, 则查询存储在中数据库快照的信息 每个数据库快照在事务上与源数据库一致 在被数据库所有者显式删除之前, 快照始终存在 第 90/100 页
数据库快照和数据分区管理 1. 数据库快照 (Snapshot) 数据库快照的用途 1 维护历史数据以生成报表 2 可以避免由于用户失误造成的数据损失 3 可以避免由于管理失误造成的数据损失 4 利用快照中的信息, 手动重新创建删除的表或其他丢失的数据 第 91/100 页
数据库快照和数据分区管理 1. 数据库快照 (Snapshot) 创建数据库快照 任何能创建数据库的用户都可以创建数据库快照 Transact-SQL 语句是创建数据库快照的唯一方式 Transact-SQL 语法格式如下 第 92/100 页
数据库快照和数据分区管理 CREATE DATABASE database_snapshot_name ON ( NAME = logical_file_name, FILENAME = 'os_file_name' ) [,...n ] AS SNAPSHOT OF source_database_name [;] 例 3.9 为 test01 创建数据库快照 第 93/100 页
数据库快照和数据分区管理 1. 数据库快照 (Snapshot) 删除数据库快照 具有 DROP DATABASE 权限的任何数据库用户都可以通过删除操作来删除数据库快照 删除数据库快照的方法与删除数据库相同 (1) 在 SQL Server Management Studio 中查看数据库快照, 然后右击, 在弹出的快捷菜单中选择 删除 命令即可 (2) 使用 DROP DATABASE 语句 第 94/100 页
数据库快照和数据分区管理 USE master GO DROP DATABASE test01snapshot GO 第 95/100 页
数据库快照和数据分区管理 2. 数据分区管理 数据分区, 即将一个原本的大数据表拆分成较小的多个数据表, 由于需要查询的数据局限于空间的局部性, 即查询的行往往位于同一分区中 通过分区可以将在大量数据集中进行查询的操作转换为在小部分数据中进行查询的操作, 从而获得更快更高的查询效率 除此之外, 将数据分区也有利于数据库的维护操作 第 96/100 页
数据库快照和数据分区管理 2. 数据分区管理 如果将原有的大数据表拆分成多个小数据表, 则通常被称为水平分区 水平分区的特点是每个分区中包含的列数是一样, 但是其每个分区表中的行数被减少了 而与之对应地, 还存在着一种被称为垂直分区的方案, 即将一个数据表中的列划分到多个结构较为简单的数据表中 第 97/100 页
数据库快照和数据分区管理 2. 数据分区管理 在 SQL Server 2008 中创建分区表的参考步骤 (1) 创建分区函数以指定如何分区, 以及分区所涉及的数据表 (2) 创建分区方案以指定分区函数的分区在文件组上的位置 (3) 创建使用分区方案的表 第 98/100 页
小结 本章的学习过程中, 应该重点掌握下面几个知识点 (1) 数据库的基本概念 : 数据库对象 数据库文件 文件组 数据库所有者等 (2) 数据库的基本操作 : 创建 修改 管理 删除和添加文件等 (3) 数据库的存储方式 : 数据文件和日志文件的存储 (4) 查看操作数据库文件的脚本 (5) 文件组的创建与管理 第 99/100 页
第 100/100 页