RBa*_*ung 5 sql-server restore sql-server-2012
我正在为客户编写一组(部分)自动化数据库部署的过程,大多数情况下工作正常,但有时 RESTORE 命令会失败,并出现操作系统错误 32,即文件正在被另一个进程使用(详细信息如下)。
我在谷歌上进行了广泛的搜索,但发现很少适用于我的具体情况。我怀疑我忽略了某些东西,但我似乎找不到它。
这是命令:
RESTORE DATABASE [NBBC_Logistics] FROM DISK = '\\wpdboardq01\Shares\DbCopy\DevBackups\NBBC_Logistics_140916112310.bak'
WITH FILE=1, NOUNLOAD, STATS=10,
MOVE 'NBBC_Logistics' TO 'D:\MSSQL2K12\MSSQL11.MSSQLSERVER\MSSQL\DATA\NBBC_Logistics.mdf',
MOVE 'NBBC_Logistics_log' TO 'D:\MSSQL2K12\MSSQL11.MSSQLSERVER\MSSQL\DATA\NBBC_Logistics_log.ldf',
REPLACE
;
Run Code Online (Sandbox Code Playgroud)
这会导致以下错误消息:
Msg 3634, Level 16, State 1, Line 11
The operating system returned the error '32(The process cannot access the file because it is being used by another process.)' while attempting 'RestoreContainer::ValidateTargetForCreation' on 'D:\MSSQL2K12\MSSQL11.DEV\MSSQL\DATA\NBBC_Logistics_log.ldf'.
Msg 3156, Level 16, State 8, Line 11
File 'NBCC_Logistics_Model2_log' cannot be restored to 'D:\MSSQL2K12\MSSQL11.DEV\MSSQL\DATA\NBBC_Logistics_log.ldf'. Use WITH MOVE to identify a valid location for the file.
Msg 3119, Level 16, State 1, Line 11
Problems were identified while planning for the RESTORE statement. Previous messages provide details.
Msg 3013, Level 16, State 1, Line 11
RESTORE DATABASE is terminating abnormally.
Run Code Online (Sandbox Code Playgroud)
需要注意的一些事项:
这种情况仅发生在某些接收 SQL 实例上,其中大多数实例都执行非常相似的命令,没有任何问题。
失败的实例是同一机器上有多个 SQL 实例(DEV 和 QA),并且它尝试将数据库备份从 DEV 恢复到同一数据库的 QA 版本。
同一实例中的其他数据库可以毫无问题地执行其相应的 RESTORE 命令。
源逻辑文件名(在错误中显示)可能与数据库现有文件名(在命令中命名)不同,但是,我相信在某些情况下这确实有效。
另外,请仔细注意,错误报告的文件路径不是我在 MOVE 中指定的,而是原始文件路径(其中仍然包含 DEV 实例使用的原始数据库文件)。
因此,它似乎试图首先将数据库文件恢复到其原始路径位置,然后才将它们移动到我告诉它的路径。这与文档所说的相反,并且显然通常是完全行不通的,因为恢复数据库副本的人无法控制原始文件的位置,并且无法保证此类路径存在且尚未使用。
任何帮助将不胜感激。
只是为了阻止一些不适用的自动响应:
sp_lock
REPLACE
,它应该覆盖现有数据库使用备份文件时,请确保使用逻辑文件名。在同一备份文件中使用多个备份集时,请务必检查所使用的文件是否正确。
在这种情况下:
File 'NBCC_Logistics_Model2_log' cannot be restored to 'D:\MSSQL2K12\MSSQL11.DEV\MSSQL\DATA\NBBC_Logistics_log.ldf'. Use WITH MOVE to identify a valid location for the file.
看起来好像您的逻辑文件名错误或备份集中的备份错误。我知道您指出了这一点,但是询问备份集中的信息并仔细检查是有意义的。
归档时间: |
|
查看次数: |
30108 次 |
最近记录: |