关于数据库备份后,如何恢复?

cwjdily 2003-10-17 11:00:25
我从别的机子上备份了一个sql数据库,想再我的机子上恢复一下,怎么做呢,
倾写明步骤,我是sql初学者,请各位次教。谢谢!
...全文
257 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
gmlxf 2003-10-17
  • 打赏
  • 举报
回复
楼上的都可以的。
zjcxc 元老 2003-10-17
  • 打赏
  • 举报
回复
初学的话,还是建议到企业管理器中恢复吧.

企业管理器--右键数据库--所有任务--还原数据库--输入恢复后的数据库名--从设备--选择你的备份文件名,

伍子V5 2003-10-17
  • 打赏
  • 举报
回复
可以考虑在查询分析器中创建下面的存储过程,然后用下面的语句恢复数据库:
exec p_RestoreDb 'x:\备份文件名','数据库名'

/*
恢复数据库
指定备份文件名及要恢复的数据库名
自动恢复到SQL数据目录下

--调用示例
exec p_RestoreDb 'c:\fund\fund.smp','new'
*/

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_RestoreDb]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[p_RestoreDb]
GO

create proc p_RestoreDb
@bkfile varchar(1000), --定义要恢复的备份文件名
@redb varchar(200), --定义恢复后的数据库名
@overexist bit=1 --是否覆盖已经存在的数据库
as
/*--直接在查询分析器中执行
declare @bkfile varchar(1000),@redb varchar(200),@overexist bit
select @bkfile='c:\fund\fund.smp' --定义要恢复的备份文件名
,@redb='new' --定义恢复后的数据库名
,@overexist=0 --是否覆盖已经存在的数据库
-----------------------------------------------------------*/

--从备份文件中获取逻辑文件名和物理文件名
declare @logfn1 varchar(250),@logfn2 varchar(250)
declare @phyfn1 varchar(1000),@phyfn2 varchar(1000)

--创建临时表,保存获取的信息
create table #tb(lgfn varchar(250),pyfn varchar(1000),type char(1),fg varchar(200),size bigint,maxsize bigint)

--从备份文件中获取信息
insert into #tb
exec('restore filelistonly
from disk='''+@bkfile+'''')

--将信息保存到变量中
select @logfn1=lgfn,@phyfn1=pyfn from #tb where type='D'
select @logfn2=lgfn,@phyfn2=pyfn from #tb where type='L'

--删除临时表
drop table #tb

--显示获取的信息
select @logfn1 as 逻辑数据文件名,@phyfn1 as 物理数据文件名
union all
select @logfn2 as 逻辑日志文件名,@phyfn2 as 物理日志文件名

--生成恢复的语句
declare @sql varchar(8000)

--得到SQL安装时的数据文件路径
select @phyfn1=rtrim(reverse(filename)) from master..sysfiles where name='master'

select @phyfn1=reverse(substring(@phyfn1,charindex('\',@phyfn1),8000))

--生成数据恢复语句,将数据库恢复到SQL数据目录下
set @sql='restore database '+@redb
+' from disk='''+@bkfile+''''
+' with move '''+@logfn1+''' to '''
+@phyfn1+@redb+'.mdf'',move '''
+@logfn2+''' to '''+@phyfn1+@redb+'.ldf'''
+case @overexist when 1 then ',replace' else '' end
exec(@sql)
go
txlicenhe 2003-10-17
  • 打赏
  • 举报
回复
将备份文件复制到你的本机上,再用此备份文件恢复。
若用语句,如下处理
/************ 备份 恢复 *******
backup database sys to disk='c:\目录\a.bak' with init
差异:
backup database sys to disk='c:\目录\a.bak' WITH DIFFERENTIAL

--还原
use master
RESTORE DATABASE TestDB FROM DISK = 'c:\目录\a.bak'

还原:
USE master
restore database 数据名 from disk='c:=\test.bak' with REPLACE

/********************************************************/
参考:
http://expert.csdn.net/Expert/topic/2359/2359124.xml?temp=.4968531
数据库备份/恢复方案 邹建

dgljf 2003-10-17
  • 打赏
  • 举报
回复
裝個簡體SQL 2000吧
右击"数据库"->所有任务->还原数据库->"还原为数据库"输入需还原的数据库名->选从设备单选按钮->选择设备->添加->在文件名中输入或选择备份库的完整路径->确定->确定->单击选项标签->选择在现有数据库上强制还原->"在移到物理文件名"编辑栏中是否为
SQL SERVER2000安装目录\data\数据库名.mdf和SQL SERVER2000安装目录\data\数据库名_log.ldf,如果不是则修正.->单击确定.
cwjdily 2003-10-17
  • 打赏
  • 举报
回复
谢谢各位,结帖。

34,575

社区成员

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

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