您的位置:首页 > 数据库

sql server 2005 还原 备份 数据库

2011-09-16 09:24 946 查看
--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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: