3

我正在尝试使用图表和外来键将整个数据库恢复到服务器上的现有数据库我想用新数据库替换它,我尝试了以下脚本但没有成功

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 Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\DuxburyCaravans.BAK”。操作系统错误 3(无法检索此错误的文本。原因:15105)。
消息 3013,级别 16,状态 1,第 1 行
RESTORE DATABASE 异常终止。

4

3 回答 3

11

唯一适用于实际服务器机器 -这RESTORE是您自己的 PC,还是单独的机器?

如果它是一台单独的机器:您无法将数据库从本地硬盘恢复到远程服务器上 - 您需要将*.bak文件放在服务器可以访问的驱动器上 - 例如服务器自己的本地驱动器或服务器拥有的网络驱动器映射(和访问)。

于 2011-05-13T15:19:47.473 回答
2

该错误表明数据库 DuxburyCaravans 正在使用中。您可以通过更改为 SINGLE_USER 模式来关闭 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
于 2011-05-13T13:49:59.010 回答
1

您首先需要:

  • 关闭与您尝试恢复的数据库的所有连接,或者
  • 使用 MS SQL Management Studio,连接到远程服务器。右键单击根服务器节点并选择Activity Monitor。展开Processes,右键单击正在使用您的数据库的每个进程并选择Kill。当然,请谨慎行事。

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

于 2011-05-13T13:40:54.713 回答