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

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

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

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

|
|
实用技巧
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 的 所 有 书 籍 和 在 线 文 档 只 说 到 此
为 止, 实 际 上 要 想 运 行 这 个 命 令, 还 有 很 多 步 骤, 以 下 是
我 在 实 践 中 总 结 出 的 步 骤.
- 停 止MSSQLSERVER 服 务.
- 打 开Control Panel---Service, 找 到MSSQLSERVER 服 务, 在Startup Parameter 中,
输 入-m, 点Start 以 单 用 户 模 式 启 动SQL Server.
- 切 换 到Enterprise Manager , 卸 载(unregister)SQL Server 列 表 中 所 有 服
务 器.
- 切 换 回Control Panel, 停 止SQLExcutive 服 务.
- 启 动isql/w, 以sa 登 录, 运 行disk init 命 令, 关 闭isql/w.
- 再 次 回 到Control Panel, 启 动MSSQLSERVER, 这 次 不 加 任 何 启 动 参
数, 启 动 SQLExcutiv.
- 在Enterprise Manager 中 重 新 登 记(register) 原 有 的 服 务 器. 此 时 数
据 库 设 备 中 的 数 据 库 也 已 经 恢 复 了.
---- 以 上 步 骤 中, 关 键 是1. 停 止SQLExcutive, 2. 在isql/w 中 执
行disk refit. |
|
在日常的工作生活中,
我们对计算机软硬件技术的应用开发肯定有许多的心得体会,
拿来和众人分享:让别人得到他们想要的,使自己找到苦苦寻觅的;
小的点点滴滴,大的工程系统,这里都需要。投稿 的关键在“技巧”二
字,知他人所不知,这样的稿件本栏最最欢迎! 大家公认的
好文章自然会有好的奖励。希望每个人
在这里都有所收获...

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