还原数据库 SQL 脚本不起作用

Posted

技术标签:

【中文标题】还原数据库 SQL 脚本不起作用【英文标题】:Restore Database SQL script not working 【发布时间】:2016-09-07 09:38:04 【问题描述】:

我用下面的方法来恢复远程服务器中的 .bak 文件,但它不工作。

restore database Status_backup
from disk = N'E:\Status bak files\Status_backup_201404302300.bak'
with 
    move 'Status_backup_201404302300' to N'E:\Files\Status_backup_201404302300.mdf',
    move 'Status_backup_201404302300' to N'E:\Files\Status_backup_201404302300.ldf'

我遇到了错误

消息 3201,级别 16,状态 2,行 25 无法打开备份设备 'E:\Status bak 文件\Status_backup_201404302300.bak'。操作系统 错误3(系统找不到指定的路径。)。消息 3013,级别 16, State 1, Line 25 RESTORE DATABASE 异常终止。

请提出脚本中的错误是什么?

【问题讨论】:

错误信息中明确表示:“系统找不到指定的路径。”。确保备份文件存在于您指定的位置并且可供运行 SQL Server 的帐户访问。 在文件夹 10 中存在带有日期时间戳的 .bak 文件。我需要检查哪个帐户? 【参考方案1】:

您的路径包含空格。添加双引号或将路径名更改为不带空格的名称。

正如在 cmets 中所证明的那样,您的实际问题是文件在另一台机器上的位置。您尝试使用本地路径访问远程文件。您应该将备份文件复制到本地计算机(显然是您的 sql 服务器所在的位置),然后使用相应的路径重试。

【讨论】:

你是把单引号换成双引号还是把路径用双引号括起来,把整个字符串用单引号括起来? 刚刚用双引号替换了单引号。有错吗? sql server 和文件在同一台电脑上吗?您是否有足够的权限进行恢复? sql server 访问文件的路径/文件权限是否足够? 现在做,错误信息告诉你什么。找出逻辑文件的确切命名方式。 再次,请查看您的错误消息。它甚至会告诉你命令,然后用谷歌搜索它的语法。如果这最终再次导致 3201 错误并且您的路径确实是正确的,那么我们仍然必须谈论不同的事情。【参考方案2】:

试试这个;

RESTORE DATABASE Status_backup 
FROM DISK = 'E:\Status bak files\Status_backup_201404302300.bak'
WITH
   MOVE 'Status_backup_201404302300' TO 'E:\Files\Status_backup_201404302300.mdf', 
   MOVE 'Status_backup_201404302300_log' TO 'E:\Files\Status_backup_201404302300.ldf', 
REPLACE

【讨论】:

以上是关于还原数据库 SQL 脚本不起作用的主要内容,如果未能解决你的问题,请参考以下文章

SQL脚本如何还原成SQL数据库呢?

SQLServer2000中 如何用sql脚本还原数据库

如何还原数据库脚本文件(Deiphi+SQL)

sql 用于还原数据库的SQL脚本

sql还原时出现3169错误

简单sql server数据库自动还原脚本