第 10 章 简 化 数 据 库 管 理 员 的 任 务
M icrosoft 的 目 标 之 一 是 降 低 包 括 Microsoft SQL Server 的 M icrosoft 产 品 线所 有 者 的 全 部 费 用 。 他 们 完 成 这 个 目 标 的 方 法 之 一 是 用 企 业 管 理 器 简 化 与 数 据库 维 护 有 关 的 任 务 , 使 其 数 据 库 管 理 直 接 并 且 容 易 。 不 放 弃 工 作 以 外 的 任 何 数据 库 , 然 而 却 能 够 使 它 们 高 速 和 高 效 地 执 行 数 据 库 维 护 任 务 。 这 一 章 介 绍 简 化M icrosoft SQL Server 数 据 库 管 理 员 角 色 的 一 些 增 强 功 能 。
-
自 动 和 动 态 配 置 (Automatic and Dynamic Configuration)
-
内 存 ( M emory)
-
锁 定 (Locks)
-
数 据 库 文 件 自 动 扩 展 (Database Files Expand Automatically)
-
自 动 增 大 TempDB 和 启 动 重 置 (Autogrow TempDB and Startup
Reset)
-
当 恢 复 时 数 据 库 自 动 创 建 和 改 变 (Automatic Database Creation and A lteration When Restoring)
-
Transact SQL 版 本 兼 容 性 级 别 (Transact SQL Version
Compatibility Levels)
-
配 置 选 项 的 简 化 (Simplification of Configuration Options)
-
动 态 结 构 管 理 (Dynamic Schema Management)
-
删 除 列 (Drop a Column)
-
修 改 视 图 、 触 发 器 和 存 储 过 程 (Alter a
View,Trigger,Procedure)
-
UNIQUE IDENTIFIER 数 据 类 型 和 全 局 唯 一 标 识 符 (UNIQUE IDENTIFIER Datatype and the Globally Unique Identifier(GUID)
自 动 和 动 态 配 置
在 SQL Server 7 中 有 一 些 自 动 和 动 态 设 置 的 服 务 配 置 选 项 , 其 行 为 叫 自 我调 节 。 以 前 这 些 选 项 不 得 不 手 工 地 设 置 , 它 们 保 持 一 样 的 值 直 到 数 据 库 管 理 员手 工 地 再 次 改 变 配 置 。 用 SQL Server 7 服 务 器 时 经 常 地 自 动 地 改 变 。
内 存
M icrosoft SQL Server 现 在 能 动 态 地 使 用 内 存 。 内 存 自 动 地 设 置 、 增 强 并 且收 缩 取 决 于 在 N T 服 务 器 上 使 用 什 么 。 如 果 内 存 服 务 器 配 置 选 项 设 置 为 零 (0), 内 存 是 自 动 地 和 动 态 地 分 配 到 SQL Server ; 如 果 该 内 存 选 项 是 设 置 为 一 非 零 设置 , SQL Server 得 到 的 内 存 不 超 过 该 数 量 。 设 置 内 存 使 用 , 在 企 业 管 理 器 中 展开 服 务 器 组 , 选 择 一 服 务 器 , 在 它 上 面 正 确 按 选 择 属 性 , 选 择 M emory 标 签 ( 参阅 图 10.1 , SQL 服 务 器 性 能 对 话 框 的 M emory 标 签 )。
图 10.1SQL Server 属性对话框的内存面板
懒 惰 的 作 者 扫 描 该 系 统 来 决 定 物 理 内 存 有 多 少 是 空 的 。 目 的 是 保 持 N T 页 面调 度 但 是 将 内 存 给 出 SQL Server 。懒 惰 的 作 者 的 程 序 始 终 保 持 在 5 M B 中 的 200K
以 内 是 空 的 。 如 果 在 那 里 没 有 5MB 是 空 的 , 它 将 减 少 用 于 SQL Server 内 存 的数 量 , 把 它 给 N T 。 当 更 多 的 内 存 变 得 可 用 时 , 懒 惰 作 者 将 再 次 增 加 SQL Server 缓 冲 区 高 速 缓 冲 器 并 且 使 SQL Server 具 有 5MB ( 加 或 减 200K ) 可 用 物 理 内 存 。
锁 定 (Locks)
可 用 于 锁 定 配 置 的 最 大 值 是 默 认 值 为 零 。 在 该 设 置 中 , SQL Server 自 动 并且 动 态 地 将 该 锁 定 内 存 分 配 成 每 锁 96 字 节 。
在 SQL Server 高 速 缓 冲 器 中 ,不 到 40% 的 内 存 将 被 用 于 锁 定 ,包括 SQL Server
内 存 分 配 的 2% 初 始 分 配 。
如 果 希 望 自 己 设 定 锁 定 选 项 , 必 须 首 先 使 用 SP 设 置 系 统 存 储 过 程 来 设 定 另一 个 服 务 器 配 置 选 项 , Show Advanced Options 设 为 1( 真 )。 可 以 在 查 询 分 析 器窗 口 里 执 行 这 个 任 务 , 或 在 命 令 行 使 用 OSQL 实 用 程 序 。
EXEC sp_configure ′ show advanced option s′ ,1 G O
RECONFIGURE WITH OVERRIDE G O
EXEC sp_configure ′ locks ′ ,yourintegervalue G O
注 意 : 查 询 分 析 器 能 够 通 过 选 择 在 分 层 结 构 树 中 服 务 器 , 然 后 在 企 业 管 理 器工 具 菜 单 中 被 调 用 。
数 据 库 文 件 自 动 扩 展
传 统 地 说 , 数 据 库 管 理 员 的 一 个 重 要 任 务 是 管 理 数 据 库 的 使 用 空 间 。 当 数据 库 发 展 到 能 使 用 全 部 分 配 空 间 时 , 这 时 需 要 一 个 有 见 识 的 数 据 库 管 理 员 的 干预 。 当 驱 动 器 上 留 有 空 间 的 时 候 , SQL Server 7 删 除 这 个 障 碍 并 自 动 地 扩 展 数据 库 文 件 。 现 在 唯 一 的 问 题 成 为 确 定 在 驱 动 器 上 有 空 间 , 并 且 在 偶 然 生 成 一 笛卡 儿 产 品 以 及 插 入 查 询 以 后 你 不 用 插 入 百 万 行 。 当 磁 盘 已 满 时 , 需 要 人 工 干 预 。然 而 , 可 以 用 CREATE DATABASE 语 句 变 量 控 制 该 数 据 库 的 最 大 增 长 和 最 大规 模 。 为 使 驱 动 器 避 免 充 满 过 去 的 容 量 , 将 该 数 据 库 设 置 到 理 想 的 最 大 规 模 。这 是 一 个 重 要 的 改 进 ; 过 去 , 当 数 据 库 达 到 它 的 分 配 极 限 时 , 它 停 止 工 作 , 直到 一 个 DBA 通 过 扩 展 数 据 库 来 解 决 问 题 。
自 动 增 长 TempDB 和 启 动 重 置
tempdb 是 一 个 系 统 数 据 库 , 该 系 统 数 据 库 是 数 据 库 的 工 作 存 储 区 域 。 现 在 , 当 通 过 ORDER BY 句 子 做 一 次 查 询 或 其 它 复 杂 查 询 时 , 需 要 创 建 临 时 工 作 区 表格 时 , 该 数 据 库 在 需 要 时 可 以 增 长 。 然 而 对 tempdb 的 分 配 空 间 不 停 止 分 配 , 但是 , 当 SQL Server 停 止 和 启 动 时 , 该 数 据 库 返 回 到 它 原 有 的 规 模 。
当 恢 复 时 数 据 库 自 动 创 建 和 改 变
当 发 出 一 个 RESTORE 命 令 时 , 有 一 个 新 的 变 量 : REPLACE ( 替 换 )。 这 个变 量 意 味 着 SQL Server 将 毁 掉 该 数 据 库 并 根 据 备 份 集 合 中 的 详 细 说 明 再 创 建它 。 如 果 不 使 用 REPLACE ( 替 换 ) 选 项 , 该 数 据 库 在 下 列 条 件 下 将 不 还 原 :
-
数 据 库 已 经 在 服 务 器 存 在
-
数 据 库 名 称 与 备 份 集 合 数 据 库 名 称 不 同
-
在 数 据 库 中 文 件 的 集 合 与 包 含 在 备 份 集 合 中 的 数 据 库 文 件 集 合 不 同
在 恢 复 进 程 中 , 用 微 软 SQL Server 是 识 别 不 出 文 件 的 大 小 不 同 的 , 而 且 当 恢复 发 生 时 , 它 们 是 不 被 检 查 的 。
Transact SQL 版 本 兼 容 性 级 别
存 储 过 程 的 sp_db cmptlevel 兼 容 性 级 别 系 统 是 设 置 兼 容 姓 级 别 的 关 键 。 在已 将 数 据 库 升 级 到 SQL Server 7 以 后 ( 参 阅 13 章 “ 升 级 SQL Server ” ), 用 户 数据 库 的 兼 容 性 级 别 能 被 设 置 到 升 级 之 前 的 位 置 , 应 用 程 序 将 起 到 升 级 前 的 作 用 。
系 统 数 据 库 将 有 一 个 SQL Server 7 的 兼 容 性 级 别 。 对 model 系 统 数 据 库 , 兼 容 性 级 别 初 始 设 置 为 70 。 现 在 你 可 将 它 改 为 60 或 65 , 其 后 在 该 model 系 统数 据 库 中 , 所 有 的 新 数 据 库 都 将 以 你 设 置 的 兼 容 性 级 别 创 建 。
sp_dbcmptlevel [ databasename,compatibilitylevel]
每 个 数 据 库 关 键 字 的 改 变 取 决 于 兼 容 性 级 别 。 对 70 来 说 , BACKUP , PERCENT , RESTORE , TOP 是 保 留 的 词 , 但 不 在 低 一 级 的 兼 容 性 级 别 中 。 对65 来 说 , AUTHORIZATION , CASCADE , CROSS , DISTRIBUTED , ESCAPE , FULL , INNER , JOIN , LEFT , OUTER , PRIVILEGES , RESTRICT , RIGHT
, SCHEM A , WORK 都 是 保 留 的 词 , 但 不 在 兼 容 级 别 为 60 之 中 。
配 置 选 项 的 简 化
在 Sybase Legacy 中 , 许 多 服 务 器 配 置 选 项 不 能 使 用 , 并 且 关 于 这 些 选 项 所做 工 作 的 文 本 也 是 缺 少 的 。 下 面 一 些 配 置 选 项 已 经 从 SQL Server 7 中 删 除 :
-
备 份 缓 冲 区 规 模 · LE 最 小 阈 值
-
过 程 缓 存 · 每 线 程 的 RA 槽
-
备 份 线 程 · LE 阈 值 百 分 比
-
RA 缓 存 碰 撞 极 限 · RA 工 作 器 线 程
-
释 放 缓 冲 区 · 日 志 记 录 暂 停
-
RA 缓 存 错 过 限 制 · 恢 复 标 记 位
-
噪 声 干 扰 存 储 桶 · 最 大 懒 惰 存 入 IO
-
RA 延 迟 · 暂 停 远 程 控 制
-
LE 最 大 阈 值 · 打 开 数 据 库
-
RA 预 先 读 取 · S M P 并 行 性
以 下 列 出 的 各 项 服 务 器 配 置 选 项 在 SQL Server 7 中 是 有 效 的 :
-
affinity 掩 码 · 资 源 超 时
-
网 络 包 大 小 · 锁 定
-
允 许 更 新 · 扫 描 启 动 程 序
-
打 开 对 象 · IO 最 大 同 步
-
对 应 的 阈 值 成 本 · 设 定 工 作 集 大 小
-
优 先 升 级 · 最 大 平 行
-
游 标 阈 值 · 显 示 高 级 选 项
-
查 询 调 速 器 费 用 限 制 · 最 大 服 务 器 内 存
-
默 认 语 言 · 旋 转 计 数 器
-
查 询 等 待 · 最 大 文 本 记 录 规 模
-
默 认 排 列 顺 序 id · 时 间 限 制
-
恢 复 时 间 间 隔 · 最 大 工 作 线 程
-
填 充 度 (%) · Unicode 比 较 样 式
-
远 程 访 问 · 媒 质 保 留
-
索 引 创 建 内 存 (KB) · Unicode 地 点 id
-
远 程 登 录 超 时 选 项 · 查 询 最 小 内 存
-
缓 冲 器 中 的 语 言 · 用 户 连 接
-
远 程 处 理 转 换 · 最 小 服 务 器 内 存
-
全 文 本 中 间 语 言 · 用 户 选 项
-
远 程 超 时 查 询 · 嵌 套 触 发 器
-
轻 便 合 并
在 SQL Server 上 更 新 的 服 务 器 配 置 选 项 提 供 一 个 更 清 晰 的 调 整 机 会 的 列表 。 储 存 程 序 的 sp_configure 系 统 能 在 master 系 统 数 据 库 中 执 行 , 更 改 配 置 选项 的 值 。
sp_configure [ configurationoption,value ]
有 些 服 务 器 配 置 选 项 在 Enterprise Manager 中 , 以 一 系 列 的 屏 幕 提 供 , 这 些屏 幕 , 你 可 以 通 过 选 择 SQL Server , 从 Enterprise Manager 分 层 结 构 树 中 右 击 并选 择 Properties 来 访 问 。 General 标 签 显 示 服 务 器 信 息 。
M emory 标 签 决 定 SQL Server 是 否 动 态 地 和 自 动 地 分 配 内 存 或 允 许 用 户 设定 内 存 。 这 与 内 存 服 务 器 配 置 选 项 相 对 应 。 Processor 标 签 允 许 你 设 置 最 大 的 工作 线 程 、 推 前 优 先 级 、 处 理 器 数 以 及 考 虑 平 行 执 行 查 询 的 最 小 查 询 平 面 阈 值 标记 。 Security 标 签 决 定 认 证 方 式 和 SQL Server 启 动 说 明 以 及 非 管 理 员 在 使 用XP-Cmdshell 执 行 命 令 时 使 用 的 SQL Agent CmdExec 程 序 的 说 明 。
Connections 标 签 设 定 服 务 器 最 大 同 时 连 接 用 户 配 置 选 项 , 默 认 连 接 选 项 , 远 程 超 时 查 询 , 以 及 分 布 事 务 的 增 量 ( MTS) 。 Setting 标 签 包 含 有 嵌 套 触 发 器 开关 , 允 许 更 新 , 以 及 默 认 语 言 。 SQL Mail 设 置 也 在 该 屏 幕 上 。 有 些 选 项 被 认 为是 Advanced Option 。 这 些 不 在 上 述 屏 幕 的 选 项 必 须 在 使 用 sp-Configure 系 统 存储 过 程 之 后 设 定 , 该 系 统 储 存 的 程 序 可 设 置 该 服 务 器 配 置 选 项 。
sp_configure ′ Show Advanced Options ′ ,1 G O
RECONFIGURE WITH OVERRIDE G O
使 用 RECONEIGURE WITH OVERRIDE 选 项 , 能 够 立 刻 更 改 被 认 为 的 动 态的 服 务 器 选 项 的 配 置 , 不 用 关 闭 和 启 动 SQL Server 。 否 则 , 该 SQL Server 必 须停 机 和 重 新 启 动 来 更 改 运 行 时 的 值 。
动 态 结 构 管 理
能 容 易 地 改 变 一 个 数 据 库 结 构 的 能 力 对 提 高 数 据 库 管 理 效 率 , 使 数 据 库 管理 更 直 观 起 重 要 的 作 用 。 删 除 列 可 以 从 其 它 相 关 联 的 产 品 中 获 得 的 能 力 多 年 来已 经 从 SQL Server 中 消 失 。 现 在 这 些 能 力 完 全 包 含 在 SQL Server 7 中 同 时 , 这种 能 力 还 可 以 改 变 一 个 视 图 , 触 发 器 或 存 储 过 程 。
删 除 列
A LTER TABLE Transact-SQL 命 令 现 在 已 经 有 能 力 删 除 列 。 DROP COLUMN
增 加 到 ALTER TABLE 中 后 使 之 成 为 可 能 。
A LTER TABLE tablename DROP COLUMN columnname
修 改 视 图 、 触 发 器 和 存 储 过 程
对 SQL Server 来 说 ,A LTER VIEW , A LTER TRIGGER 以 及 ALTER
PROCEDURE 是 新 的 Transact-SQL 指 令 。 这 对 数 据 库 管 理 员 来 说 是 有 用 的 , 因为 , 在 这 些 指 令 执 行 的 时 候 , 允 许 依 赖 存 储 过 程 并 且 触 发 器 不 受 影 响 。 在 以 前的 版 本 中 , 视 图 、 触 发 器 和 存 储 过 程 必 须 被 丢 掉 并 且 重 新 建 立 。 然 后 , 许 可 必须 重 新 施 加 并 且 依 赖 存 储 过 程 和 触 发 器 必 须 重 新 编 译 。
唯 一 标 识 符 数 据 类 型 和 全 局 唯 一 标 识 符
唯 一 标 识 符 数 据 类 型 可 以 解 决 这 样 一 个 问 题 , 即 在 处 理 多 于 一 个 表 格 的 所有 表 格 所 有 行 中 , 有 一 列 需 要 是 唯 一 性 的 标 识 。 现 在 两 表 格 的 联 合 仍 然 产 生 具有 全 局 唯 一 性 的 标 识 符 的 行 。 在 先 前 的 版 本 中 Transact-SQL 程 序 设 计 是 要 求 产生 该 全 局 性 唯 一 的 ID 的 。 对 唯 一 标 识 符 数 据 类 型 允 许 的 唯 一 操 作 是 平 等 的 关 系比 较 运 算 (=,< ,和 >) 以 及 IS NOT NULL 和 IS NULL 运 算 符 。 有 一 称 为 N E W ID() 的 新 建 函 数 , 能 被 用 来 初 始 化 一 个 唯 一 标 识 符 列 或 变 量 。 用 全 局 唯 一 标 识 符(GUID )初 始 化 一 变 量 :
DECLARE @var_1 uniqueidentifier SET @var_1= NEWID()
对 全 局 唯 一 标 识 符 初 化 一 列 :
UPDATE tablename
SET columnname= NEWID()
WHERE columnname=columnvalue
总 的 来 说 , 所 有 这 些 新 的 特 征 , 贡 献 出 来 的 作 用 使 数 据 库 管 理 员 的 管 理 更容 易 、 更 有 效 、 更 令 人 愉 快 。