sql server 2005 还原 备份 数据库

--1、

RESTORE DATABASE [JJ_FLGL] FILE = N'MBS_Data',  FILE = N'MBS_Log' FROM  DISK = N'D:\FLGL_backup_201109160200.bak'

WITH  FILE = 1,  NOUNLOAD,  REPLACE,  STATS = 10

GO


--消息 3219,级别 16,状态 3,第 1 行
--不能选择文件或文件组 "MBS_Log" 用于此操作。
--消息 3013,级别 16,状态 1,第 1 行
--RESTORE DATABASE 正在异常终止。


--2、

USE master
RESTORE DATABASE [JJ_FLGL]
   FROM DISK = 'D:\FLGL_backup_201109160200.bak'
   WITH MOVE 'JJ_FLGL' TO 'G:\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\JJ_FLGL.mdf',
   MOVE 'JJ_FLGL_Log' TO 'G:\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\JJ_FLGL_log.ldf',
STATS = 10, REPLACE
GO

--消息 3234,级别 16,状态 2,第 2 行
--逻辑文件 'JJ_FLGL' 不是数据库 'JJ_FLGL' 的一部分。请使用 RESTORE FILELISTONLY 来列出逻辑文件名。
--消息 3013,级别 16,状态 1,第 2 行
--RESTORE DATABASE 正在异常终止。


--3、

select   *   from   sysfiles 

--1    1    3095336    -1    10    1048578    0    MBS_Data    G:\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\JJ_FLGL.mdf
--2    0    189088    -1    10    1048642    0    MBS_Log    G:\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\JJ_FLGL_log.ldf


--4、
USE master
RESTORE DATABASE [JJ_FLGL]
   FROM DISK = 'D:\FLGL_backup_201109160200.bak'
   WITH MOVE 'MBS_Data' TO 'G:\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\JJ_FLGL.mdf',
   MOVE 'MBS_Log' TO 'G:\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\JJ_FLGL_log.ldf',
STATS = 10, REPLACE
GO

--消息 3101,级别 16,状态 1,第 3 行
--因为数据库正在使用,所以无法获得对数据库的独占访问权。
--消息 3013,级别 16,状态 1,第 3 行
--RESTORE DATABASE 正在异常终止。


--5、转自网上
在还原数据库时,有时会出现“因为数据库正在使用,所以无法获得对数据库的独占访问权”的错误,这时就需要在还原数据库前先杀死正在使用数据库的线程。

以还原blog数据库为例,在还原数据库前执行下面语句即可:

由于该解决方案用到了系统表中的sysprocesses ,若要访问 sysprocesses,您必须位于 master 数据库上下文中

---需要定位到master 数据库
declare @dbname varchar(20)
set @dbname='jj_flgl'  --这里给变量赋的值是要进行还原的数据库的名称

declare @sql nvarchar(500)
declare @spid int  --SPID sqlserver进程ID int
set @sql='declare getspid cursor for
select spid from sysprocesses  where dbid=db_id('''+@dbname+''')'--当前正由进程使用的数据库id  int
exec (@sql)
open getspid
fetch next from getspid into @spid
while @@fetch_status<>-1  --如果FETCH 语句没有执行失败或此行不在结果集中。
begin
exec('kill '+@spid)  --终止正常连接
fetch next from getspid into @spid
end
close getspid
deallocate getspid


--6、

执行 4 步骤。



备份数据jj_flgl 到.bak文件。然后利用此bak文件恢复一个新的数据库jj_flgl.
USE master
BACKUP DATABASE jj_flgl
  TO DISK = 'D:\FLGL_backup_201109170200.bak'
RESTORE FILELISTONLY
  FROM DISK = 'D:\FLGL_backup_201109170200.bak'
RESTORE DATABASE jj_flgl
  FROM DISK = 'D:\FLGL_backup_201109170200.bak'
  WITH MOVE 'MBS_Data' TO 'G:\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\JJ_FLGL.mdf',
  MOVE 'MBS_Log' TO 'G:\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\JJ_FLGL_log.ldf'
GO



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值