第 4 章 SQL Server Agent

SQL Executive 已 更 名 为 SQL Server Agent, 可 提 供 下 列 功 能 :

  • 安 排 作 业

  • 执 行 作 业

  • 创 建 警 告

  • 通 知 操 作 员

注 意 : 相 关 区 域 位 于 M icrosoft SQL Servers | SQL Agent 下 的 M icrosoft M anagement Console | Enterprise Manager 分 层 树 状 结 构 中 。

SQL Server Agent 是 一 种 N T 服 务 , 它 和 SQL Server 一 起 运 行 , 向 SQL Server 传 送 作 业 调 度 和 警 告 。所 有 的 调 度 信 息 都 包 含 在 msdb 系 统 数 据 库 中 ,在 安 装 SQL Server 时 该 数 据 库 会 自 动 创 建 msdb 系 统 数 据 库 。 SQL Server 的 这 种 扩 展 增 强 了许 多 性 能 , 包 括 多 重 服 务 器 作 业 的 管 理 。 图 4.1 表 示 Server Manager 服 务 列 表中 的 SQL Server Agent 项 , 图 4.2 表 示 Enterprise M anager 层 次 列 表 中 的 Create Job W izard 。

第 4 章 SQL Server Agent - 图1

图 4.1 要查看 NT Services Manager 中的层次列表 ,可 进 入 Computer 菜单 ,并选择 Services | SQL Server Agent

注意 : 该 有 关 区 域 位 于 NT Service Control Manager| Computer 菜 单 | Services

中 。

访 问 SQL Server Agent 有 两 种 方 法 :1)Enterprise M anager, 它 允 许 创 建 作 业 、操 作 员 和 警 告 ; 2)NT Service Control Manager, 用 它 可 手 动 启 动 和 停 止 服 务 , 并提 供 了 SQL Server Agent 的 启 动 配 置 。

在 研 究 了 三 个 Enterprise M anager 类 别 后 , 将 会 看 到 NT Service Control M anager。 SQL Server Agent 下 的 三 个 类 别 分 别 是 :

  • Operators( 操 作 员 )

  • Jobs( 作 业 )

  • Alerts (警 告 )

第 4 章 SQL Server Agent - 图2

图 4.2 在 M M C 中,选择 Enterprise Manager 、 Tools 、 Wizards ,然后选择 Create Job Wizard

定 义 操 作 员

SQL Server Agent 被 创 建 为 一 项 附 加 功 能 ,以 辅 助 大 规 模 的 数 据 库 操 作 。S Q L Server Agent 中 的 功 能 可 使 其 安 排 是 管 理 4 个 数 据 库 还 是 4000 个 数 据 库 。 数 据库 操 作 员 的 定 义 和 内 置 的 警 告 机 制 是 非 常 有 用 的 。

Database Operators 是 负 责 使 终 端 用 户 能 访 问 服 务 器 和 数 据 库 的 群 体 , 是 数据 库 操 作 的 关 键 。 当 用 户 访 问 SQL Server 数 据 库 中 的 数 据 而 发 生 中 断 时 , 就 通知 数 据 库 操 作 员 。而 且 一 旦 发 生 服 务 中 断 ,通 知 操 作 员 往 往 至 关 重 要 。SQL Server Agent 将 操 作 员 与 服 务 中 断 相 关 联 , 来 提 供 这 项 服 务 , 方 法 是 在 发 生 错 误 或 失败 时 创 建 定 制 警 告 , 该 警 告 设 法 通 过 e-mail 、 电 话 寻 呼 服 务 或 网 络 消 息 以 通 知操 作 员 。 通 常 用 计 算 机 警 告 操 作 员 而 不 是 数 据 库 用 户 , 数 据 库 用 户 通 常 只 在 匆忙 完 成 工 作 时 才 发 现 问 题 。 并 不 是 要 数 据 库 用 户 指 出 要 给 谁 打 电 话 , 并 等 操 作员 来 找 出 并 解 决 问 题 , 而 是 让 计 算 机 根 据 发 出 寻 呼 的 警 告 寻 呼 操 作 员 。 只 要 操作 员 能 访 问 网 络 连 接 , 在 许 多 情 况 下 , 甚 至 可 以 在 用 户 认 识 到 数 据 的 访 问 发 生中 断 之 前 就 找 出 并 解 决 该 问 题 。

建 立 SQL Server Agent 环 境 的 前 几 步 之 一 是 定 义 操 作 员 。 为 此 , 可 执 行 以下 步 骤 :

  1. 单 击 Microsoft Management Console( 也 称 为 M M C )的 Console Root 下 的

M icrosoft SQL Server 的 项 。

  1. 展 开 已 创 建 好 的 Complete Reference Group 服 务 器 组 。

  2. 展 开 希 望 使 用 的 服 务 器 。

  3. 展 开 M anagement 下 的 SQL Server Agen t 。

  4. 右 击 Operators 。

  5. 从 快 捷 菜 单 上 选 中 New Operator 。

  6. 显 示 New Operator 屏 幕 , 如 图 4.3 所 示 。

第 4 章 SQL Server Agent - 图3

图 4.3 在 M M C 中,选择 Enterprise Manage| Microsoft SQL Serve r| SQL Agen t| Operator| New Operator| General 标签

New Operator 屏 幕 允 许 输 入 名 称 、 e-mail 名 和 寻 呼 e-mail 名 , 并 允 许 指 定 操作 员 接 收 通 知 的 时 间 顺 序 。

New Operator 对 话 框 中 的 Notification 标 签 , 用 于 确 定 应 通 知 操 作 员 错 误 的严 重 程 度 和 通 知 的 方 法 。 甚 至 还 有 这 样 的 选 择 , 允 许 在 操 作 员 度 假 、 生 病 时 取消 通 知 , 如 图 4.4 所 示 。

第 4 章 SQL Server Agent - 图4

图 4.4 在离开办公室时取消通知

创 建 作 业

在 定 义 了 操 作 员 之 后 , 就 可 创 建 作 业 和 作 业 类 别 了 。 创 建 作 业 的 步 骤 如 下 :

  1. 单 击 Microsoft Management Console (MMC ) 的 Console Root 下 的 Microsoft SQL Servers 项。

  2. 展 开 已 创 建 好 的 Complete Reference Group 服 务 器 组 。

  3. 展 开 希 望 使 用 的 服 务 器 。

  4. 展 开 M anagement 下 的 SQL Server Agen t 。

  5. 右 击 Jobs。

  6. 从 快 捷 菜 单 上 选 择 New Job , 显 示 New Job 屏 幕 。

New Job 屏 幕 上 有 4 个 不 同 的 标 签 , 每 个 标 签 都 等 同 于 新 作 业 的 全 屏 幕 功能 , 下 面 将 对 每 个 标 签 作 详 细 介 绍 , 这 4 个 标 签 是 :

  • General( 通 用 )

  • Steps( 步 骤 )

  • Schedules (调 度 )

  • Notifications( 通 知 )

General 标 签 下 的 面 板 有 新 作 业 的 输 入 域 , 包 括 Nam e、 Category、 Owner 和Description 。 这 些 输 入 域 允 许 描 述 作 业 、 命 名 作 业 、 指 定 作 业 的 拥 有 者 , 把 作业 放 到 作 业 类 别 中 。 这 个 屏 幕 包 含 的 选 项 可 确 定 该 作 业 是 用 于 本 地 服 务 器 , 还是 用 于 多 个 服 务 器 , 以 便 在 多 重 服 务 器 环 境 下 的 每 个 服 务 器 上 运 行 相 同 的 作 业 。

Steps 标 签 下 的 面 板 如 下 图 所 示 , 该 面 板 具 有 创 建 作 业 步 骤 的 强 大 功 能 。 它模 拟 了 大 型 计 算 机 用 户 熟 悉 的 作 业 流 环 境 , 并 提 供 一 个 受 欢 迎 的 功 能 。 系 统 管理 员 不 必 再 编 写 和 编 译 在 IBM 大 型 计 算 机 环 境 下 使 用 该 作 业 步 骤 功 能 时 所 需 的代 码 。 采 用 Enterprise Manager, 可 以 填 写 屏 幕 上 的 区 域 , 从 下 拉 列 表 框 选 择 项目 或 单 击 选 项 , 再 按 下 O K 按 钮 , 这 是 我 们 习 惯 使 用 的 标 准 W indows 控 件 。 这是 比 过 去 的 大 型 机 Job Control Language(JCL )更 柔 和 的 用 户 界 面 。

第 4 章 SQL Server Agent - 图5

Steps 面 板 上 有 一 个 New 按 钮 , 可 为 作 业 添 加 步 骤 。 按 下 New 按 钮 可 展 示New Job Step 屏 幕 , 这 正 是 引 人 注 意 的 地 方 。 New Job Step 屏 幕 的 General 面 板上 有 Step Name 和 Type 两 个 下 拉 列 表 框 , 其 中 包 含 以 下 选 项 :

  • Active Scripting

  • CmdExec

  • Distribution

  • Logreader

  • Merge

  • Snapshot

  • TSQL

Type 下 拉 列 表 框 有 些 很 有 趣 的 功 能 , 就 是 对 于 每 一 种 选 择 General 面 板 都不同,就像 Advanced 标签下的面板一样。图 4.5 表 示 TSQL 类 型 ( 顶 部 ) 和 Active Scripting 类 型 ( 底部 ) 的 General 标 签 。 每 个 屏 幕 都 是 专 为 选 中 的 类 型 制 作 的 。 图

  1. 表 示 TSQL 类型 ( 顶 部 ) 和 Active Scripting 类 型 ( 底部 ) 的 Advanced 屏 幕 。 由 图可 见 , 每 个 屏 幕 都 根 据 类 型 的 不 同 而 不 同 。 以 上 列 出 的 所 有 类 型 都 是 这 样 的 。

第 4 章 SQL Server Agent - 图6

图 4.5TSQL 类型 ( 上图 ) 和 ActiveScripting( 下图 ) 的 General 面 板

第 4 章 SQL Server Agent - 图7

图 4.6TSQL 类型 ( 上图 ) 和 ActiveScripting (下图 ) 的 Advanced 面板

注 意 , Open 和 Parse 按 钮 与 TSQL 类 型 相 关 联 。 Open 按 钮 允 许 选 择 文 件 , 位 置 很 恰 当 的 Parse 按 钮 可 检 查 TSQL 代 码 的 错 误 。

ActiveScripting 的 General 面 板 上 的 单 选 按 钮 指 明 Command 窗 口 中 设 置 的语 言 , 可 选 择 Visual Basic 脚 本 、 Java 脚 本 , 或 在 其 他 语 言 名 中 填 上 O ther。

TSQL 类 型 的 Advanced 面 板 有 一 个 域 用 于 输 入 输 出 文 件 , 还 有 一 个 选 项 指明 是 否 想 追 加 到 指 定 的 文 件 中 。 该 面 板 上 有 一 个 Run as User 输 入 域 , 以 及 O n Success 或 Failure action 下 拉 列 表 框 形 式 的 On Success / Failure Flow 逻 辑 , 该下 拉 列 表 框 中 有 几 个 选 项 , 包 括 退 出 记 录 成 功 的 作 业 、 退 出 记 录 失 败 的 作 业 和进 入 下 一 步 。 在 On Success 的 背 后 , 有 一 个 真 实 的 逻 辑 集 记 录 失 败 , 或 在 O n Failure 背 后 有 一 个 真 实 的 逻 辑 集 记 录 成 功 。

ActiveScripting 的 Advanced 面 板 与 前 面 TSQL 类 型 的 Advanced 面 板 一 样 , 屏 幕 上 都 内 置 了 相 同 的 On Success / Failure 流 逻 辑 。它 与 TSQL 类 型 的 Advanced 面 板 具 有 相 同 的 Retry Attempts 和 Retry Interval 设 置 。

New Job 屏 幕 上 的 Schedules 标 签 允 许 安 排 运 行 作 业 的 时 间 。 它 有 以 下 几 个 调 度选 项 :

  • 在 SQL Server Agent 启 动 时 自 动 启 动

  • 只 要 CPU 空 闲 就 启 动

  • 一 次 启 动

  • 循 环 启 动

删 除 行 的 作 业 实 例 可 以 很 好 地 说 明 只 要 CPU 空 闲 便 运 行 该 作 业 。

循 环 作 业 选 项 还 有 另 一 个 与 Edit Recurring Job Schedule 屏 幕 相 关 联 的 屏 幕 。

该 屏 幕 可 通 过 New Job Schedules 标 签 下 的 Changes 按 钮 来 访 问 , 它 允 许 确 定 循环 作 业 是 每 日 、 每 周 还 是 每 月 运 行 。 如 果 该 作 业 每 日 运 行 , 还 可 进 一 步 确 定 该作 业 每 天 运 行 多 少 次 。

New Job 对 话 屏 幕 的 Notifications 面 板 如 下 图 所 示 :

第 4 章 SQL Server Agent - 图8

该 面 板 指 明 了 在 作 业 完 成 时 要 执 行 的 操 作 , 包 括 是 谁 , 用 什 么 方 法 通 知 以

前 定 义 的 操 作 员 。 该 屏 幕 还 有 一 个 选 项 , 用 来 指 明 是 否 写 入 NT Event 日 志 。 所有 的 操 作 都 有 一 个 关 联 的 下 拉 列 表 框 , 该 列 表 框 描 述 了 这 些 操 作 应 执 行 哪 些 事件 。 该 下 拉 列 表 框 中 的 选 项 如 下 :

  • 成 功 完 成

  • 未 成 功 完 成

  • 一 旦 作 业 完 成

创 建 警 告

在 创 建 作 业 后 , 就 可 以 创 建 警 告 。 创 建 警 告 的 步 骤 如 下 :

  1. 单 击 M icrosoft M anagement Console(MMC ) 的 Console Root 下 的 M icrosoft SQL Servers 项。

  2. 展 开 已 创 建 好 的 Complete Reference Group 服 务 器 组 。

  3. 展 开 希 望 使 用 的 服 务 器 。

  4. 展 开 M anagement 下 的 SQL Server Agen t 。

  5. 右 击 A lerts 。

  6. 从 快 捷 菜 单 上 选 择 New Alert 。

  7. 显 示 New Alert 屏 幕 。

New Alert 屏 幕 上 有 两 个 标 签 : General 和 Response , 每 个 标 签 都 相 当 于 新警 告 的 全 屏 幕 功 能 。 在 此 详 细 介 绍 General 面 板 , 在 本 章 的 后 面 再 解 释 Response

面 板 。

New Alert 对 话 框 的 General 面 板 上 有 名 称 、 类 型 以 及 事 件 警 告 定 义 和 历 史 。可 以 在 区 域 中 输 入 名 称 , 从 下 拉 列 表 框 中 选 择 类 型 , 但 事 件 警 告 定 义 需 详

细 介 绍 。

该 面 板 上 有 两 个 单 选 按 钮 : Error 号 和 Serverity( 严 重 程 度 )。 由 于 SQL Server 所 生 成 的 错 误 给 定 了 严 重 等 级 , 所 以 可 以 在 某 个 特 殊 错 误 或 在 具 有 某 个 严 重 程度 的 一 组 错 误 上 生 成 警 告 。 如 果 选 择 Error number 单 选 按 钮 , 就 可 按 下 ... 按 钮 , 搜 索 有 效 的 SQL Server 错 误 。 该 按 钮 符 号 表 示 可 查 找 更 详 细 的 内 容 , 在 这 种 情况 下 , 可 搜 索 有 效 的 错 误 号 。 这 种 访 问 ( 以 前 需 编 程 才 可 访 问 ) 深 度 错 误 信 息 深度 的 能 力 , 提 供 了 极 其 有 用 的 特 性 , 它 使 各 地 的 SQL Server 操 作 员 使 用 起 来 都非 常 方 便 。

第 4 章 SQL Server Agent - 图9

由 于 所 有 的 信 息 都 保 存 在 sysmessages 表 中 , 所 以 在 企 业 运 作 警 告 策 略 的 设

计 中 作 为 辅 助 手 段 对 此 进 行 查 询 是 非 常 方 便 的 。 前 面 已 经 介 绍 了 实 例 的 查 询 , 其 查 询 结 果 如 表 4.1 所 示 , 表 中 列 出 了 SQL Server 本 身 包 含 的 某 些 错 误 信 息 。在 主 数 据 库 中 的 Query Analyzer 下 执 行 该 查 询 , 可 查 看 SQL Server 使 用 的 所 有错 误 消 息 :

SELECT severity, error, description FROM sysmessages G O

表 4.1 显 示 了 可 用 于 警 告 的 错 误 样 本 。 严 重 等 级 为 21 的 错 误 所 示 的 结 果 集

如 表 4.1 所 示 。

表 4.1 错 误 严 重 等 级 21 的 sysmessages 系统表的输出

严重等级

错误号

描述

21

601

不 在 描 述 符 杂 凑 表 中 的 数 据 库 ′ % d ′ 中 的 系 统 表 ′ % ld ′ 的

描述符

21

602

在 dbid ′ % d ′ 、 对 象 ′ % ld ′ 、 索 引 ′ % d ′ 的 Sysindexes

中找不到行。运行 Sysindexes 上的 DBCC CHECKTABLE

21

604

在数据库′% .*ls ′ 中 对 象 ′ % ld ′的 Sysobjects 中找不到行。运行 Sysobjects 上的 DBCC 检查表

21

605

试 图 提 取 属 于 对 象 ′ % .*ls′ , 但 不 属 于 对 象 ′ % .*ls ′的数据库′% .*ls ′中的逻辑页面% S_PGID

21

607

在 用 于 搜 索 自 变 量 的 对 象 ′ % .*ls ′ 的 对 话 描 述 符 中 , 分 配 的空间不足。只预料到有% d 个搜索自变量严重等级错误号描述

21

608

包 含 数 据 库 ′ % .*ls ′ 中 对 象 ′ % .*ls ′ 的 逻 辑 页 面 % S_PGID

的 缓 冲 区 , 在 扫 描 期 间 不 能 保 存 于 该 对 象 的 第 一 或 第 二 个 对 话

描述符的插槽中

续 表

21

611

试图结束空闲事务或处于更新之中的事务

21

613

请 求 从 数 据 库 ′ % .*ls′ 中 对 对 象 ′ % .*ls′ 已 进 行 完 的 扫 描 中

检索多行

21

615

无法找到数据库表 id= % d, 名称 = ′% .*ls ′

21

618

将 % d 的 varno 传送给打开表——最大的有效值为% d

21

623

不能通过 RID 在页面中检索行,因为逻辑页% S_PGID 不是数

据页 .% S_RID .% S_PAGE

21

624

由于被请求的 RID 编号比页面上最后一个 RID 更高,试图通

过 RID 从页面获取行失败。 %S_RID.%S_PAGE 。

21

625

不能通过 RID 在逻辑页% S_PGID 中检索行 ,因 为 该 RID(= % d)

的偏移表 (= % d )中的条目小于或等于 0

21

629

不 能 删 除 页 面 % S_PGID 的 成 簇 索 引 项 — — 索 引 行 包 含 页 面 %

S_PGID

21

639

不能提取逻辑页% S_PGID dbid % d ,该页当前未分配

21

644

在索引页% S_PGID indexid % d 数据库′% .*ls ′中未找到 RID

′% .*hs′的索引项

21

649

无 法 找 到 Page % S_PGID Objid % ld 状态 O x % x 的成簇索引

项。在索引页% S_PGID 中搜索数据库′% .*ls ′中的该项

21

805

在标记缓冲区杂质或刷新 Syslogs 时,找不到杂凑表中数据库

′% .*ls ′中的对象′% .*ls ′的描述符

21

806

找不到数据库′% .*ls ′中逻辑页% S_PGID 的虚拟页

21

811

试图抓取位于描述符链上的缓冲区

21

812

试图抓取固定的缓冲区

续 表

21

815

无法找到高速缓存中的含有 Sysindexes 页的缓冲区—— pageno=

% S_PGID dbid= % d

21

820

试图弄脏位于 I/ O 中的非日志缓冲区% S_BUF

21P

822

不能启动请求% S_BLKIOPTR 的 I / O

21

824

试图在数据库 ( Sysdatabases 中没有项)的缓冲区中写入页面,

% S_BUF

21

825

试 图 在 无 DBTABLE 结 构 的 数 据 库 中 的 缓 冲 区 中 写 入 页 面 ,

Sysdatabases 行标记为过程% d .% S_BUF 所使用

21

834

在 含 有 杂 质 的 缓 冲 区 上 调 用 缓 冲 区 清 理 ( 页 面 % S_PGID,stat% #x /% #x,objid % #x,sstat% #x)

21

901

在 杂 凑 后 , 无 法 找 到 杂 凑 表 中 的 数 据 库 ′ % d ′ 对 象 ′ % ld ′ 的描述符

21

909

多 于 % d 个 的 项 目 需 要 建 立 数 据 库 ′ % .*ls ′ 的 逻 辑 虚 拟 转 换表,该数据库的碎片太多

21

912

找不到假定已打开的数据库′% .*ls′的 DBTABLE 描述符

21

915

在数据库′ %.*ls ′的 DBTABLE 链 中 找 不 到 系 统 类 别 ′ %.*ls

′的描述符——所有的系统类别都应永久驻留在该链中

21

919

数 据 库 ′ % .*ls ′ 已 由 恢 复 程 序 标 记 为 ′ suspect ′ 。 请 运 行

DBCC 卸掉该数据库严重等级错误号描述

21

931

因 为 不 能 初 始 化 全 局 时 间 戳 , 所 以 不 能 打 开 数 据 库 “% .*ls ′。这表明当前数据库的记录有问题。请与 Technical Support 联系

以请求帮助

21

1103

数据库′% .*ls ′ 的 分 配 页 % S_PGID 中的分段 id 不同于我们

正分配的对象分段。请运行 DBCC CHECKALLOC

续 表

21

1108

不 能 再 分 配 范 围 % S_PGID 、 数 据 库 % d 。 范 围 中 的 对 象 % ld 、索引 id % d 、状态% d 与再分配的对象中的对象 id % ld 、索引 id

% d 、状态% d 不匹配。请运行 DBCC CHECKALLOC

21

1109

不能读取分配页% S_PGID ,因对象 ID 不正确 ( % ld)或页面 ID

不正确% S_PGID

21

1117

对象% ld 的范围链的链接不正确

21

1514

要排序的分配页正忙。页面号% S_PGID .% S_BUF

21

1525

分 类 失 败 。 分 类 向 前 滚 动 时 遇 到 序 列 之 外 的 分 类 描 述 符 时 间戳 。 记 录 中 的 旧 时 间 戳 为 % 04x % 081x , 新 的 时 间 戳 为 % 04x % 081x 。 分 类 描 述 符 中 的 时 间 戳 为 % 04x % 081x211528 字符数据

比 较 失 败 。 在 SMEL 项 [% d ]的用于服务器的缺省分类表中有无法识别的 Sort-Map-Element 类型 ( % d)

21

1529

字 符 数 据 比 较 失 败 。 用 于 服 务 器 的 缺 省 分 类 表 的 Sort-Map- Elements 列表没有正确结束。此列表开始于 SMEL 项 [% d ]

21

1601

没 有 可 用 的 资 源 以 启 动 ′ % ls ′ 进 程 。 使 用 sp_configure 可增加用户连接数

21

1602

不能初始化网络% d

21

1603

进程优先级无效,或无可用的进程插槽

21

1604

进程不可运行,或 kpid % d 不在范围之内

21

1605

打开新连接的虚拟插槽失败

21

1606

初始化网络接收缓冲器失败

21

1607

初始化网络发送缓冲器失败

21

1608

在 向 前 端 发 送 结 果 时 遇 到 网 络 错 误 。 详 细 信 息 请 查 看 SQL

Server 错误记录

续 表

21

1609

Kpid % d 超出范围

21

1610

不能删除进程% d

21

1611

不能安装退出功能

21

1612

不能安装注意功能

21

1613

不能关闭服务器进程% d 的网络% d 连接

21

1614

不能产生进程

21

1615

进程不能休眠

21

1616

刷新接收流缓冲区失败

21

1617

不能影响进程 % d

21

1619

不能打开 TEMPDB ,不能继续

21

1620

第一次打开主 db 失 败

21

1808

不支持缺省设备

21

1905

在 Sysindexes 中找不到索引′% .*ls ′表的′ zero ′行严重等级

错误号描述

21

2202

不能把虚拟读出地址转换到设备,不能搜索 vaddr=0x % x

21

2205

不能将虚拟写入地址转换到设备,不能搜索 vaddr=0x % x

21

2208

试图读取未打开的设备 vaddr=0x % x

21

2209

试图写入未打开的设备 vaddr=0x % x

21

2603

在 索 引 页 上 插 入 行 时 , 对 象 ′ % .*ls ′ 的 索 引 % d 的 逻 辑 页 %

S_PGID 未留有空间,这种情况应在转换索引时考虑

21

2620

行 号 在 偏 移 % d 处 的 偏 移 与 %S_PAGE 页 的 偏 移 表 中 的 项 目 不匹配

21

2622

在插入长度为% d.% S_PAGE 的行时该页空间不足

续 表

21

2623

运行时 PG_DEALLOC 位在该页上,应由恢复程序中的取消分

配页 .% S_PAGE 关闭它

21

2624

因为行长度% d 小于最小长度% d ,所以插入表% S_DES 失败

21

2626

试 图 在 数 据 库 ′ % .*ls′ 中 的 对 象 ′ % .*ls′ 的 成 簇 索 引 中 非 法

插入重复的关键行

21

2728

找不到表′% .*ls ′的 Sysobjects 行

21

3001

内 部 错 误 。 找 不 到 系 统 分 类 ′ % .*ls ′ 的 索 引 , 不 能 清 空 数 据库

21

3113

数据库′% .*ls ′在 DBO 的 SYSUSERS 中没有项目

21

3114

数据库′% .*ls ′在 Sysdatabases 中无项目

21

3301

在 Syslogs(log.p % d) 中找到无效的日志记录

21

3303

在 xact %S_RID 的日志中找不到 SAVEPT ,当前号为 % d ,查找

%d

21

3305

数 据 库 ′ % .*ls ′ 中 的 页 面 % S_PGID 在 运 行 期 间 读 取 或 装 载

xact 未初始化

21

3306

期望过程% d 包含页面% S_PGID 上的逻辑锁,而不是过程% d

21

3307

期望过程% d 包含页面 %S_PGID 上的逻辑锁

21

3308

期望页面 %S_PGID 带有 %ls 锁

21

3309

放弃时过程% d 被 选 作 死 锁 牺 牲 品 , 同 时 等 待 过 程 % d 释 放 页

面% S_PGID 上的锁

21

3310

找不到带有 RID:( % ld ,% d )的日志记录

21

3313

在数据库% .*ls 中 重 新 记 录 操 作 时 发 生 的 错 误 。 该 错 误 位 于 日志记录 ID % S_LSN 处

续 表

21

3314

在数据库% .*ls 中 撤 消 记 录 操 作 时 发 生 的 错 误 。 该 错 误 位 于 日

志记录 ID % S_LSN 处

21

3401

Rec_init: 在 Sysdatabases 中 Rid 上的最后一个检测点的 getnext SCAN_RID 失败 .% S_RID

21

3404

Rec_complete: 打 不 开 多 数 据 库 事 务 中 控 制 数 据 库 的 控 制 数 据 库

(id % d)

21

3412

数据库% d 、表% ld 。试图将表标记为可疑。 Sysobjects.objid 上的 Getnext SCAN_CLUST 失败

21

3413

数 据 库 % d 。 试 图 将 数 据 库 标 记 为 可 疑 失 败 。 Sysdatabases.dbid

上的 Getnext NC 扫描失败

21

3417

不能恢复主数据库,退出

21

3418

打开模型的描述符不够

21

3421

因 为 不 能 初 始 化 全 局 时 间 戳 记 , 所 以 不 能 恢 复 数 据 库 ′ % .*ls

′ 。 这 表 明 当 前 数 据 库 的 记 录 有 问 题 。 请 与 Technical Support

联系请求帮助严重等级错误号描述

21

3423

恢 复 数 据 库 ′ % .*ls ′ 错 误 , 在 位 置 % S_RID 处 找 不 到 期 望 的

BEGIN TRANSACTION 记录

21

3424

用于事务 ( % ld ,% d )的事务表中空间不足

21

3425

在事务表中找不到事务 (% ld ,% d)

21

3429

恢 复 数 据 库 ′ % .*ls ′ 错 误 , 不 能 连 接 以 提 交 服 务 , 检 查 xact:

% S_RID 的完整状态

21

3437

恢复数据库′% .*ls ′错误,不能连接到 DTC ,以检查 xact:% S_RID 的完整状态

续 表

21

3440

数 据 库 ′ % .*ls ′ (dbid % d):RECOVERDB 命 令 只 能 在 使 用

WITH NORECOVERY 选项的 RESTORE 命令后运行

21

3441

数据库′% .*ls ′ (dbid % d):访问文件′% ls ′时 RECOVERDB

命令失败。错误是′% .ls″

21

3442

数据库′% .*ls ′ (dbid % d):撤消文件的尺寸不够

21

3443

数 据 库 ′ % .*ls ′ (dbid % d): 因用于备用/只读而标记,但已经

被修改。不能执行 RESTORE LOG

21

3444

数 据 库 ′ % .*ls ′ (dbid % d): 找不到以前恢复操作的起始点。不

能执行 RESTORE LOG

21

3445

数据库′% .*ls ′ (dbid % d):文 件 ′ % ls ′为无效的撤消文件

21

3501

在 检 查 点 时 间 % S_RID 得 不 到 数 据 库 ′ % d ′ 的 Sysdatabases

21

3502

在数据库′% .*ls ′的 Syslogs 中找不到检查点记录

21

3504

数据库′% .*ls ′中的 Sysindexes 页 # % S_PGID 在调用 getindex

后不在检查点处的缓冲区高速缓存中

21

3904

不 能 合 并 数 据 库 ′ % .*ls ′ 的 对 象 ′ %.*ls ′ 中 的 逻 辑 页 %

S_PGID ,两个页面合在一起比一个页面包含的数据多

21

3905

不 能 合 并 数 据 库 ′ % .*ls ′ 中 对 象 ′ % .*ls ′ 中 的 逻 辑 页 %

S_PGID 其行号% d 可用于两个页面

21

3907

从 PROBE 接收结果失败。尚未提交名为% .*ls 的分布式事务, 数据库中的数据可能不一致

21

4003

O D S 错误。服务器正在中止该连接

21

4202

清 空 数 据 库 ′ % .*ls ′ 中 的 事 务 期 间 , 在 查 找 事 务 页 时 找 不 到

日志中的 BEGINXACT 记录

续 表

21

4203

在 清 空 数 据 库 ′ % .*ls ′ 中 的 事 务 时 , 裁 减 页 面 后 找 不 到 检 查

点记录

21

4802

Bulk_main :在 BULK INSERT 表上,主索引行的 getindex 失败

21

4803

从 bcp 客户机接收了无效的行长度% d 。最大行长度为% d

21

4804

从 主 机 上 读 取 当 前 行 时 过 早 地 到 达 消 息 的 结 尾 。 主 机 程 序 可 能已死机

21

4807

从 bcp 客户机上接收了无效的行长度% d 。最小行长度为% d

21

4815

从 bcp 客户机接收了无效的列长度

21

4816

无效的 bcp 对象

21

4905

ALTER TABLE 失 败 , 因 为 数 据 库 ′ % .*ls ′ 中 系 统 类 别

Sysindexes 的页% S_PGID 不在高速缓存中

21

6501

数据库′% .*ls ′ 中 的 逻 辑 页 % S_PGID 在提取索引行之后从高

速缓存中丢失

21

6901

数据库 % d 中 时 间 戳 的 High 组件发生溢出。数据库表可能损坏

21

6902

页 面 时 间 戳 记 值 在 日 志 中 的 新 旧 时 间 戳 记 之 间 。 Page#= %

S_PGID , 对 象 id= % ld , 页 面 时 间 戳 记 = % 04x % 081x 。 Log :旧时间戳记 = % 04x % 081x ,新时间戳记 = % 04x % 081x

21

6903

时间戳记的高序号指明时间戳记结构可能不正确

21

6904

请 求 新 的 数 据 库 时 间 戳 记 时 , 传 递 的 数 据 库 表 和 系 统 结 构 中 的

数据库表不匹配。传递的数据库 id :% d 。系统数据库 id :% d

21

8646

在数据库′% .*ls ′中的表% d 的 indexid % d 中找不到 RID ′

% .*hs′的索引项

21

9004

数据库 " % *ls" 的记录受损

在 Severity 下 拉 列 表 框 中 , 错 误 严 重 等 级 的 某 些 实 例 可 用 于 警 告 , 这 些 错 误

严 重 等 级 如下表所示 :

错误等级

描述

010

信息

011

未找到指定的数据库对象

012

未用

013

用户事务句法错误

014

许可不足错误

015

SQL 语句中的句法错误

016

其他用户错误

017

资 源 不 足

018

非致命的内部错误

019

资源致命错误

020

当前进程中的致命错误

021

数据库进程中的致命错误

022

致 命 错 误 :表的完整性可疑

023

致 命 错 误 :数据库的完整性可疑

024

致 命 错 误 :硬件错误

025

致 命 错 误

110

非系统消息,服务器信息

120

非系统消息,服务器警告

130

非系统消息,服务器错误

140

非系统消息,服务器异常中止

如 错 误 严 重 等 级 的 说 明 所 示 , 17 级 和 17 级 以 上 的 错 误 严 重 等 级 应 引 起 系 统管 理 员 的 注 意 , 应 向 SQL Server 操 作 员 发 出 自 动 警 告 。 如 果 SQL Server 包 含 重

要 任 务 的 应 用 程 序 , 就 应 寻 呼 操 作 员 ; 否 则 , 发 出 e-mail 消 息 就 足 够 了 。

New Alert 对 话 框 中 的 Response 标 签 能 确 定 在 发 出 警 告 时 执 行 什 么 操 作 。

Response 标 签 下 的 面 板 如 下 图 所 示 :

第 4 章 SQL Server Agent - 图10

用 户 可 以 通 知 操 作 员 或 执 行 某 项 作 业 。 有 些 选 项 包 含 寻 呼 或 e-mail 通 知 消

息 中 的 错 误 消 息 。 可 以 向 操 作 员 发 送 附 加 通 知 消 息 , 也 可 以 按 下 New Operator 按 钮 并 创 建 新 的 操 作 员 , 也 可 以 指 定 定 期 警 告 响 应 之 间 的 延 迟 时 间 ( 如 果 每 秒 发出 一 次 警 告 , 应 防 止 发 出 连 续 寻 呼 或 连 续 消 息 ), 甚 至 在 发 生 警 告 时 产 生 相 应 的SQL 陷 阱 。

至 此 , 用 户 已 了 解 了 如 何 在 Enterprise M anager 中 访 问 SQL Server Agent , 下 面 是 在 NT Service Control 中 访 问 SQL Server Agent 的 步 骤 :

  1. 在 命 令 行 提 示 下 ,键 入 srvmgr\ \ servernam e。显 示 Server Manager 屏 幕 。

  2. 从 菜 单 栏 中 选 择 Computer 。

  3. 选 择 Service s。

  4. 向 下 滚 动 , 单 击 SQLServerAgent 服 务 , 如 图 4.7 所 示 。

第 4 章 SQL Server Agent - 图11

图 4.7NT Service Control Manager | Compute r| Services

现 在 就 可 以 停 止 和 启 动 SQLServerAgent 服 务 , 或 改 变 启 动 参 数 了 。 单 击

Startup 按 钮 可 进 入 启 动 参 数 屏 幕 。

启 动 参 数 屏 幕 包 含 Startup Type 和 Logon As 两 部 分 。 Startup 类 型 由 下 列 内容 组 成 :

启动类型

描述

Automatic( 自

动 )

重新引导 N T 时, SQLServerAgent 服务自动启动

Manual( 手动 )

重新引导 N T 时, SQLServerAgent 服务必须手动启动

Disabled( 无效 )

SQLServerAgent 服务无效,不能启动

Log On As 选 项 由 以 下 内 容 组 成 :

Log On As

描述

系统帐户

由于必须具有网络访问许可,所以在 Local System 帐户中,不能指定运行 MSSQLServer 和 SQLServerAgent 服务。若没有此许可,服务器对服

务器的远程过程调用 (RPC )、复制作业和备份都将失败

本 帐 户

指定已特别设置的帐户 ,以 运 行 SQL Server Agen t。如果要运行 SQL Mail

和 SQL Server Agen t,该帐户应有网络访问权和相应的许可

在 NT Service Control Manager 中 启 动 和 停 止 SQL Server Agent 是 很 简 单 的 , 只 需 单 击 SQLServerAgent 服 务 , 并 按 下 Start 或 Stop 按 钮 即 可 , 至 于 选 择 哪 一项 合 适 , 取 决 于 SQLServerAgent 服 务 当 前 是 处 于 停 止 状 态 还 是 启 动 状 态 。

多 任 务 和 多 方 案 作 业

SQL Server Agent 允 许 通 过 创 建 作 业 步 骤 来 创 建 多 任 务 作 业 , 而 作 业 步 骤 又允 许 用 多 个 步 骤 创 建 一 个 作 业 , 也 允 许 每 个 步 骤 运 行 一 个 任 务 。 该 逻 辑 内 置 于定 义 步 骤 的 屏 幕 上 , 以 确 定 作 业 步 骤 成 功 和 失 败 时 各 进 行 什 么 操 作 ( 请 参 阅 本 章前 面 的 “ 创 建 作 业 ” )。

SQL Server Agent 还 允 许 为 同 一 作 业 创 建 多 种 方 案 , 可 以 决 定 用 每 日 、 每 周和 每 月 的 方 案 运 行 作 业 。 每 种 方 案 都 可 以 为 同 一 作 业 而 设 置 , 该 作 业 会 在 每 个预 定 的 时 间 运 行 。

M icrosoft SQL Server Agent 在 M icrosoft 寻 求 “ lights ou t( 无 光 )” 管 理 和 数据 库 中 , 是 一 个 强 有 力 的 工 具 , 它 可 以 在 晚 上 没 有 数 据 库 管 理 员 干 预 的 情 况 下自 动 运 行 任 务 。 关 于 多 服 务 器 作 业 的 详 细 情 况 , 请 参 阅 第 3 章 中 “ 配 置 多 服 务器 环 境 ” 一 节 。