急,在sql server 7.0下如何用语句还原数据库,在线等!!!

pledde 2003-09-11 10:28:00
如题
...全文
47 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
happydreamer 2003-09-11
  • 打赏
  • 举报
回复

.bak,.dat文件的处理

注意一下恢复时的源文件路径和恢复到的路径是否正确
RESTORE FILELISTONLY 命令可以帮助查看源文件路径

RESTORE FILELISTONLY
from disk='f:\db.bak' 结果为
tdmis_Data e:\database\db.mdf D PRIMARY 497221632 35184372080640
tdmis_Log e:\database\db.ldf L NULL 1048576 35184372080640

然后用
restore database db
from disk='f:\db.bak'
with NORECOVERY,
move 'db' to 'e:\database\td.mdf',
move 'db_Log' to 'e:\database\db_log.ldf'

就可以了
pengdali 2003-09-11
  • 打赏
  • 举报
回复
create PROCEDURE GY_DBBak
@bakequip int, -- 备份设备:磁盘&磁带
@bakpath varchar(50), -- 带全路径的备份文件名
@baktype int, -- 完全备份&增量备份
@baklog int, -- ‘0’备份日志
@bakdb int, -- ‘0’备份数据库
@kind varchar(7), --备份还是恢复

@retmsg varchar(20) output --返回信息
AS
DECLARE @DevName_data varchar(50)
DECLARE @DevName_log varchar(50)
declare @db_path varchar(100)
declare @log_path varchar(100)

DECLARE @RC INT

SELECT @db_path = @bakpath + '.dat'
SELECT @log_path = @bakpath + 'log.dat'
SELECT @RC=0
select @DevName_data='dali',@DevName_log='dalilog'

DBCC CHECKDB(数据库名)
/***********************************************************
** CREATE BACKUP AND RESTORE DEVICES
************************************************************/
IF @RC=0
BEGIN

EXEC sp_addumpdevice 'disk', @DevName_data,@db_path

exec sp_addumpdevice 'disk', @DevName_log,@log_path
select @rc=@@error
IF @RC<>0
begin
EXEC SP_DropDevice @Devname_data
exec sp_dropdevice @devname_log
SELECT @RC=-1000
return @rc
end
END

IF @kind='backup'
BEGIN
IF @bakequip=0
BEGIN
IF @baktype=0
BEGIN
IF @bakdb=0
BEGIN
BACKUP DATABASE 数据库名 TO DISK=@Devname_data
WITH INIT
END
IF @baklog=0
BEGIN
BACKUP LOG 数据库名 WITH NO_LOG
BACKUP LOG 数据库名 TO DISK=@DevName_log
WITH INIT,NO_TRUNCATE
END
END
ELSE BEGIN
IF @bakdb=0
BEGIN
BACKUP DATABASE 数据库名 TO DISK=@DevName_data
WITH NOINIT
END
IF @baklog=0
BEGIN
BACKUP LOG 数据库名 WITH NO_LOG
BACKUP LOG 数据库名 TO DISK=@DevName_log
WITH NOINIT,NO_TRUNCATE
END
END
END
SELECT @retmsg='数据库备份成功!'
END

IF @kind='restore'
BEGIN
RESTORE DATABASE 数据库名 FROM DISK= @DevName_data WITH REPLACE
SELECT @retmsg='恢复数据库成功!'
END

EXEC SP_DropDevice @Devname_data
exec sp_dropdevice @devname_log

RETURN 0

---测试:
declare @ varchar(100)
exec gy_dbbak 0,'aa',0,0,0,'backup',@ output
select @
pengdali 2003-09-11
  • 打赏
  • 举报
回复
--备份
backup database sys to disk='c:\目录\a.bak' with init


--还原
use master
RESTORE DATABASE TestDB FROM DISK = 'c:\2002.dat'
CrazyFor 2003-09-11
  • 打赏
  • 举报
回复
示例


说明 所有的示例均假定已执行了完整数据库备份。


A. 还原完整数据库


说明 MyNwind 数据库仅供举例说明。


下例显示还原完整数据库备份。

RESTORE DATABASE MyNwind
FROM MyNwind_1

B. 还原完整数据库备份和差异备份
下例还原完整数据库备份后还原差异备份。另外,下例还说明如何还原媒体上的另一个备份集。差异备份追加到包含完整数据库备份的备份设备上。

RESTORE DATABASE MyNwind
FROM MyNwind_1
WITH NORECOVERY
RESTORE DATABASE MyNwind
FROM MyNwind_1
WITH FILE = 2

C. 使用 RESTART 语法还原数据库
下例使用 RESTART 选项重新启动因服务器电源故障而中断的 RESTORE 操作。

-- This database RESTORE halted prematurely due to power failure.
RESTORE DATABASE MyNwind
FROM MyNwind_1
-- Here is the RESTORE RESTART operation.
RESTORE DATABASE MyNwind
FROM MyNwind_1 WITH RESTART

D. 还原数据库并移动文件
下例还原完整数据库和事务日志,并将已还原的数据库移动到 C:\Program Files\Microsoft SQL Server\MSSQL\Data 目录下。

RESTORE DATABASE MyNwind
FROM MyNwind_1
WITH NORECOVERY,
MOVE 'MyNwind' TO 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\NewNwind.mdf',
MOVE 'MyNwindLog1' TO 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\NewNwind.ldf'
RESTORE LOG MyNwind
FROM MyNwindLog1
WITH RECOVERY

E. 使用 BACKUP 和 RESTORE 创建数据库的复本
下例显示使用 BACKUP 和 RESTORE 语句创建 Northwind 数据库的复本。MOVE 语句使数据和日志文件还原到指定的位置。RESTORE FILELISTONLY 语句用于确定待还原数据库内的文件数及名称。该数据库的新复本称为 TestDB。有关更多信息,请参见 RESTORE FILELISTONLY。

BACKUP DATABASE Northwind
TO DISK = 'c:\Northwind.bak'
RESTORE FILELISTONLY
FROM DISK = 'c:\Northwind.bak'
RESTORE DATABASE TestDB
FROM DISK = 'c:\Northwind.bak'
WITH MOVE 'Northwind' TO 'c:\test\testdb.mdf',
MOVE 'Northwind_log' TO 'c:\test\testdb.ldf'
GO

F. 使用 STOPAT 语法还原到即时点和使用多个设备进行还原
下例将数据库还原到其在 1998 年 4 月 15 日中午 12 点时的状态,并显示涉及多个日志和多个备份设备的还原操作。

RESTORE DATABASE MyNwind
FROM MyNwind_1, MyNwind_2
WITH NORECOVERY
RESTORE LOG MyNwind
FROM MyNwindLog1
WITH NORECOVERY
RESTORE LOG MyNwind
FROM MyNwindLog2
WITH RECOVERY, STOPAT = 'Apr 15, 1998 12:00 AM'

G. 使用 TAPE 语法还原
下例显示从 TAPE 备份设备还原完整数据库备份。

RESTORE DATABASE MyNwind
FROM TAPE = '\\.\tape0'

H. 使用 FILE 和 FILEGROUP 语法还原
下例还原一个包含两个文件、一个文件组和一个事务日志的数据库。

RESTORE DATABASE MyNwind
FILE = 'MyNwind_data_1',
FILE = 'MyNwind_data_2',
FILEGROUP = 'new_customers'
FROM MyNwind_1
WITH NORECOVERY
-- Restore the log backup.
RESTORE LOG MyNwind
FROM MyNwindLog1

I. 将事务日志还原到标记处
下例显示将事务日志还原到名为"RoyaltyUpdate"的标记处。

BEGIN TRANSACTION RoyaltyUpdate
WITH MARK 'Update royalty values'
GO
USE pubs
GO
UPDATE roysched
SET royalty = royalty * 1.10
WHERE title_id LIKE 'PC%'
GO
COMMIT TRANSACTION RoyaltyUpdate
GO
--Time passes. Regular database
--and log backups are taken.
--An error occurs.
USE master
GO

RESTORE DATABASE pubs
FROM Pubs1
WITH FILE = 3, NORECOVERY
GO
RESTORE LOG pubs
FROM Pubs1
WITH FILE = 4,
STOPATMARK = 'RoyaltyUpdate'

pledde 2003-09-11
  • 打赏
  • 举报
回复
这个命令我这边出现错误,有没有强制还原的命令
txlicenhe 2003-09-11
  • 打赏
  • 举报
回复
--还原
use master
RESTORE DATABASE TestDB FROM DISK = 'c:\目录\a.bak'
数据库【MSDE】管理工具说明文档 数据库【MSDE】管理工具主要目的是进行对MSDE版本数据库进行日常管理操作,因为MSDE没有默认的管理工具。 系统环境:  请在已经正确安装U8(SQL)版本的机器上使用;  所要连接的目标机器正确安装了MSDE(或其他版本的SQLSERVERSQL SERVER 7.0SQL SERVER 2000); 使用建议:  使用工具时请停止其他U8系统的工作;  使用工具时请停止对其他应用程序对目标数据库的操作;  如果目标服务器上非MSDE版本(SQL SERVER 7.0SQL SERVER 2000),建议用MS提供的企业管理器来进行相应操作;  MSDE安装程序没有自带的管理工具,但是可以使用其他对应版本的SQL SERVER安装盘来安装,安装时选择安装客户端工具即可;  如果该机器上已经安装了SQLSERVER自身的管理工具,建议使用该工具管理。 使用说明: 一、 首先登陆希望管理的服务器,本工具以SA用户登陆(该用户权限足够进行相关的操作),如果SA有密码,必须正确输入,无密码可以可以不输;输入服务器名称和SA密码后点“确认”即可,点“退出”可以退出本工具: 二、 登陆成功后进入主界面: 操作区界面如上图,主要分为菜单操作区(〖操作库〗、〖操作对象〗、〖脚本〗)和鼠标右键弹出菜单区(该操作与对应的菜单操作相同,以下不再详细解释);按钮操作区(〖登陆〗、〖退出〗),对象双击操作区;以下分别介绍: 1、 菜单操作区(鼠标右键弹出菜单区): 【操作库】: 主要进行数据库级别的操作,目前包括『备份数据库』、『还原数据库』、『附加数据库』、『分离数据库』四个操作,系统数据库不能分离,当对应数据库不能进行对应操作时,对应菜单为不可用,如上图的『分离数据库』为不肯用;还原系统数据库可能不能直接进行,请根据具体提示操作。具体操作步骤与SQL SERVER自身的工具类似,此处不再赘述,注意一点,备份、还原、附加数据库请在服务器本机上进行,否则会出错; 【操作对象】: 主要针对数据库下各个对象进行操作,在左边的树壮结构中点击对应对象接点,工具在内容区域把该对象对应的详细内容显示;选择对应的对象双击可进行双击操作,如该对象无对应双击操作,则双击无反应。当对应对象不能进行对应操作时,对应菜单为不可用;目前针对的对象为表、视图、存储过程,其他对象(函数可以显示对应脚本)暂无对应操作; 『返回结果』:返回对应对象的记录,可对其中的记录进行增加(在空白记录上输入对应内容即可)、修改(直接修改对应内容即可)、删除(选择对应记录后按“Delete”键即可)操作(注意:以上操作直接受数据库约束其合法性,如操作不成功请参见其提示内容);其中存储过程无此操作,表对象双击可以返回记录,视图、存储过程双击返回其脚本(注意:此脚本仅查看,不能修改。如果返回脚本为空,有可能是系统对象。由于本工具对用WITH ENCRYPTION参数加密的存储过程、视图进行了解密显示,所以显示对应脚本要比在企业管理器中显示慢一些。),如下: 『删除』:可删除对应对象,系统对象可能无法删除,请根据提示操作;删除操作无法撤消,删除前请务必做好数据备份。 【脚本】: 可执行相应脚本操作; 脚本操作界面如下: 分『操作区』、『语句区』、『结果区』 : 『操作区』: “打开”:可以从一个SQL脚本文件(*.SQL)和文本文件(*.txt)文件内容装载到语句区; “保存”:可将语句区内容存成文件; “校验”:可校验『语句区』的脚本是否正确,结果显示在 『结果区』的“消息”页; “执行”:可执行『语句区』的脚本,结果显示在 『结果区』; “退出”:退出脚本操作返回主界面; “数据库”:选择脚本执行的对应数据库; 『语句区』: 在此区域输入、显示希望执行的脚本; 『结果区』: 显示对应操作执行的结果、消息; 2、 按钮操作区: 〖登陆〗:重新登陆服务器; 〖退出〗:推出本工具; 本工具类似简化的SQL SERVER 企业管理器,操作习惯也类似,以方便大家维护MSDE数据库(MSDE数据库没有默认的管理工具); 以上说明涉及的SQL操作(备份、还原、附加、分离等)都不再做详细说明,请参见SQL SERVER对应文档。

34,874

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧