2011-05-13 54 views
0

我想用图表恢复整个数据库nd forevals键到服务器上的现有数据库我想用新的替换,我试着用下面的脚本没有成功从本地机器到服务器恢复database.bak

drop database DuxburyCaravans  
go 
RESTORE DATABASE stonestore 
    FROM DISK = 'C:\Program Files\Microsoft SQLServer\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\DuxburyCaravans.BAK' 
    WITH MOVE 'DuxburyCaravans' TO 'D:\Microsoft SQL Server\MSSQL.1\MSSQL\Data\DuxburyCaravans.mdf', 
    MOVE 'DuxburyCaravans_log' TO 'D:\Microsoft SQL Server\MSSQL.1\MSSQL\Data\DuxburyCaravans.LDF' 

但它想出了错误:

消息3702,级别16,状态3,3号线
无法除去数据库“DuxburyCaravans” ,因为它是当前正在使用。
消息3201,级别16,状态2,行1
无法打开备份设备 'C:\ PROGRAM 文件\微软SQL服务器 \ MSSQL10_50.MSSQLSERVER \ MSSQL \备份\ DuxburyCaravans.BAK'。 操作系统错误3(未能到 检索此错误的文本原因: 15105)。
Msg 3013,Level 16,State 1,Line 1
RESTORE DATABASE异常终止 。

回答

2

RESTORE只能实际的服务器上 - 这是你自己的电脑,或者是一个单独的机器?

如果它是一个单独的机器:你不能从本地硬盘还原数据库到远程服务器上 - 你需要把*.bak文件到一个驱动器,该服务器可以达到 - 例如服务器自己的本地驱动器或服务器具有映射(和访问)的网络驱动器。

+2

这很糟糕。为什么我不能这样做? – DarthVader 2013-01-19 21:50:30

1

你首先需要:

  • 关闭你正在尝试恢复所有连接到数据库,或
  • 使用MS SQL Management Studio中,连接到远程服务器。右键单击根服务器节点,然后选择活动监视器。展开进程,右键单击每个正在使用数据库的进程,然后选择杀死。当然,请谨慎行事。

现在所有连接都已关闭,您可以恢复数据库。

+0

让我试试吧.. – 2011-05-13 13:46:18

+1

好的 - 另外,@marc_s对于需要在远程服务器上的文件是正确的。 – 2011-05-13 16:07:25

2

该错误指出数据库DuxburyCaravans正在使用中。您可以通过更改为SINGLE模式关闭SQL现有连接

ALTER DATABASE [DuxburyCaravans] SET SINGLE_USER With ROLLBACK IMMEDIATE 
RESTORE DATABASE [DuxburyCaravans] FROM DISK = N'C:\Path\To\Backup.bak' 
ALTER DATABASE [DuxburyCaravans] SET MULTI_USER 
相关问题