计算机世界日报
返回首页 产品报价 实用技巧 国产软件 技术天地 站点精选

计算机世界展览会日报

  综合要闻
  企业&人.com
  产品与技术
  网络与通信
  市场与渠道
  99全文检索

CCW网站

  网络世界
  微电脑世界
  IT经理世界
  CCW展览
  信息服务中心   家用电脑世界

兄弟刊物

  电子与信息化
  今日电子
  中国新闻科技
  电子知识产权
  电子产品世界

网上专递

  Linux园地
  友情链接
  冬涛谈法
Dongtao on Law

98内容总汇



实用技巧

MS SQL Server 数 据 库 的 恢 复

天 津 市 河 西 区 西 南 楼 祥 和 里
戴 泽 峰

一. 概 述

---- MS SQL Server 是 微 软 公 司 进 入 大 型 数 据 库 市 场 的 利 器, 它 不 同 于Foxpro, Access 这 样 的 桌 面 数 据 库, 把 同 一 个 数 据 库 的 所 有 数 据 存 在 单 一 的 文 件 中, 而 是 引 入 了 大 型 数 据 库 常 用 的 数 据 库 设 备 的 概 念, 即 首 先 要 建 立 数 据 库 设 备, 数 据 库 要 建 立 在 数 据 库 设 备 之 上, 同 一 个 数 据 设 备 上 可 以 建 立 多 个 数 据 库, 当 数 据 库 设 备 空 间 耗 尽 之 后, 无 论 硬 盘 空 间 还 有 多 少 , 也 无 法 再 输 入 数 据, 而 必 须 先 扩 展 数 据 库 设 备 空 间. 一 个SQL Server 系 统 有 哪 些 数 据 库 设 备 和 数 据 库, 都 有Master 数 据 库 保 存. 因 此, 当 因 为 某 种 原 因 必 须 重 新 安 装SQL Server 后, 怎 样 将 一 个 现 存 的 数 据 库 设 备 文 件" 挂" 到 系 统 上, 就 成 为 需 要 研 究 的 问 题.

二. 数 据 恢 复

---- 最 安 全 的 办 法 是 在 重 装 系 统 之 前 把 数 据transfer 到 另 一 台 装 有SQL Server 的 机 器 上, 安 装 完 毕 再transfer 回 来. 但 如 果 只 有 一 台 机 器 或 由 于 意 外 原 因 导 致 系 统 崩 溃 而 来 不 及 transfer, 则 只 能 从 现 有 的 设 备 文 件 中 恢 复.

---- 在SQL Server 系 统 中 除 了 数 据 库 设 备, 还 有 备 份 设 备( 本 文 不 再 叙 述 如 何 建 立 备 份 设 备 以 及 如 何 使 系 统 自 动 备 份). 正 常 情 况 下, 在 重 装SQL Server 之 前, 只 要 备 份 备 份 设 备 对 应 的 .dat 文 件 即 可, 数 据 库 设 备 对 应 的 .dat 文 件 不 必 备 份. 安 装 完 毕 后, 从 备 份 设 备 文 件 就 可 以 恢 复. ( 启 动Enterprise Manager, 选Tools-Database backup/restore, 因 是SQL Server 系 统 管 理 的 基 本 功 能, 在 此 不 再 详 述).

---- 本 文 所 要 讲 的, 是 没 有 备 份 设 备 文 件, 只 有 数 据 库 设 备 文 件 时 如 何 恢 复.

---- 首 先 介 绍 两 个 命 令:disk reinit 和disk refit. Disk reinit 命 令 格 式 如 下:

DISK REINIT
	NAME = 'logical_name',
	PHYSNAME = 'physical_name',
	VDEVNO = virtual_device_number,
	SIZE = number_of_2K_blocks
	[, VSTART = virtual_address]

---- 其 中NAME 是 数 据 库 设 备 的 名 字, PHYSNAME 是 数 据 库 设 备 文 件 的 位 置, VDEVNO 是 数 据 库 设 备 的 编 号, 可 以 将1-255 任 意 的 整 数 值 分 配 给 这 个 设 备, 但 必 须 保 证 唯 一, SQL Server 已 将0 分 配 给master 设 备. SIZE 是 该 文 件 的 大 小 除 以2K 的 值, 例 如1M 的 数 据 库 设 备 文 件SIZE 应 为512.VSTART 通 常 都 应 忽 略.

 例:DISK REINIT
	NAME = 'DEVICE5',
	PHYSNAME = 'c:\sqldata\device5.dat',
	VDEVNO = 5,
	SIZE = 25600

---- 这 个 例 子 将c:\sqldata\device5.dat 挂 在 系 统 上 并 命 名 为DEVICE5, 该 文 件 的 大 小 为 25600*2K=51200K=50M. 需 注 意 的 是SIZE 一 定 要 算 对, 如 果 这 里 给 出 的 值 与 文 件 的 实 际 大 小 不 符, 将 引 起 不 可 预 料 的 后 果.

---- Disk reinit 命 令 仅 仅 在 系 统 中 建 立 了 数 据 库 设 备, 要 想 恢 复 设 备 中 包 含 的 数 据 库, 就 要 用 到 disk refit 命 令. Disk refit 命 令 没 有 参 数, 但 必 须 在 单 用 户 模 式 下 运 行. SQL Server 的 所 有 书 籍 和 在 线 文 档 只 说 到 此 为 止, 实 际 上 要 想 运 行 这 个 命 令, 还 有 很 多 步 骤, 以 下 是 我 在 实 践 中 总 结 出 的 步 骤.

  1. 停 止MSSQLSERVER 服 务.
  2. 打 开Control Panel---Service, 找 到MSSQLSERVER 服 务, 在Startup Parameter 中, 输 入-m, 点Start 以 单 用 户 模 式 启 动SQL Server.
  3. 切 换 到Enterprise Manager , 卸 载(unregister)SQL Server 列 表 中 所 有 服 务 器.
  4. 切 换 回Control Panel, 停 止SQLExcutive 服 务.
  5. 启 动isql/w, 以sa 登 录, 运 行disk init 命 令, 关 闭isql/w.
  6. 再 次 回 到Control Panel, 启 动MSSQLSERVER, 这 次 不 加 任 何 启 动 参 数, 启 动 SQLExcutiv.
  7. 在Enterprise Manager 中 重 新 登 记(register) 原 有 的 服 务 器. 此 时 数 据 库 设 备 中 的 数 据 库 也 已 经 恢 复 了.

---- 以 上 步 骤 中, 关 键 是1. 停 止SQLExcutive, 2. 在isql/w 中 执 行disk refit.

 
免 费 订 阅

实用技巧分类

Office应用
CAD
C、C++
数据库应用
Delphi
Internet应用
Java
Notes应用
操作系统应用
PowerBuilder
VB
Visual Foxpro
其他类
上周 排行榜
如 何 投 稿 ?

编者的话

在日常的工作生活中, 我们对计算机软硬件技术的应用开发肯定有许多的心得体会, 拿来和众人分享:让别人得到他们想要的,使自己找到苦苦寻觅的; 小的点点滴滴,大的工程系统,这里都需要。投稿 的关键在“技巧”二 字,知他人所不知,这样的稿件本栏最最欢迎! 大家公认的 好文章自然会有好的奖励。希望每个人 在这里都有所收获...

r2.gif (980 bytes)
  中国惠普
  3Com中国
  Motorola中国
  CA中国
  Cabletron
  Sony在中国
  西门子WinCC
  爱普生中国
  中国建设银行
  德州仪器(TI)
  问博医药


中国计算机世界出版服务公司版权所有