MSSQL数据还原

 ---------------------------------------------------------------------
--还原数据库 v2.0 只要指定数据库,定到数库据,及备份文件路径就可以还原 angelior 2008-6-25

/*创建临时表,保存由备份集内包含的数据库和日志文档列表组成的结果集*/
--drop table #tem

---还原
Declare @BackFile varchar(1000)
Declare @DBName varchar(50)

use HQS  ---(先到指定的库)
set @DBName='HQS'
set @BackFile = 'D:/DJ01001/HQS0807130950.bak'

set nocount on  
create table #tem(
logicalname nvarchar(128), /*文档的逻辑名称*/
physicalname nvarchar(260) , /*文档的物理名称或操作系统名称*/
type char(1), /*数据文档 (d) 或日志文档 (l)*/
filegroupname nvarchar(128), /*包含文档的文档组名称*/
[size] numeric(20,0), /*当前大小(以字节为单位)*/
[maxsize] numeric(20,0) /*允许的最大大小(以字节为单位)*/
)

insert into #tem
execute('restore filelistonly from disk=''' + @BackFile +'''')

Declare @MDF_LGName varchar(50) --逻辑文件名
Declare @LDF_LGName varchar(50) --逻辑文件名

select @MDF_LGName=''''+ logicalname +'''' from #tem where rtrim(physicalname) like '%.MDF'
select @LDF_LGName=''''+ logicalname +'''' from #tem where rtrim(physicalname) like '%.LDF'

--print @MDF_LGName
--print @LDF_LGName

drop table #tem

Declare @DBMDFFile varchar(1000)
Declare @DBLOGFile varchar(1000)

select @DBMDFFile=''''+ rtrim(filename) +'''' from sysfiles where rtrim(filename) like '%.MDF'
select @DBLOGFile=''''+ rtrim(filename)+ '''' from sysfiles where rtrim(filename) like '%.LDF'

--print @DBMDFFile
--print @DBLOGFile
use master;

--断开所有用户使用
declare   hcforeach   cursor   global   for   select   'kill   '+rtrim(spid)   from   master.dbo.sysprocesses   where   dbid=db_id(@DBName)   exec   sp_msforeach_worker   '?'  

set nocount off

--RESTORE filelistonly from disk='D:/Ftp/POS200806221905.bak' with file=2
--RESTORE LABELONLY from disk='D:/Ftp/POS200806221905.bak'
--RESTORE HEADERONLY from disk='D:/Ftp/POS200806221905.bak'

--还原
Declare @OutSql varchar(1000)

SET @BackFile= '''' + @BackFile +''''

set @OutSql = 'RESTORE DATABASE ' + @DBName +'
   FROM DISK = ' +@BackFile +'
    WITH REPLACE,
    move ' + @MDF_LGName + ' to ' + @DBMDFFile +',
    move ' + @LDF_LGName  + ' to ' + @DBLOGFile

--PRINT @BackFile
execute(@OutSql)

PRINT ''
PRINT ''
print @OutSql

/*
RESTORE DATABASE XTPOS
   FROM DISK = @BackFile
    WITH REPLACE,
    move @MDF_LGName to @DBMDFFile ,
    move @LDF_LGName to @DBLOGFile
*/
---------------------------------------------------------------------

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值