我正在为客户编写一组(部分)自动化数据库部署的过程,大多数情况下工作正常,但有时 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 …
Run Code Online (Sandbox Code Playgroud)