恢复数据库时出错(Windows 7testing环境)

我有一个Windows 7操作系统作为testing环境。 我有SQL Server EE安装两个实例,命名为testing和生产。 我从testing实例的AdventureWorks数据库中进行了完整备份,并试图将其还原到生产实例中:

RESTORE DATABASE [testikanta] FROM DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008TESTI\MSSQL\Backup\AdventureWorks.bak' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10 GO 

我得到一个错误说:

 Msg 3634, Level 16, State 1, Line 1 The operating system returned the error '32(failed to retrieve text for this error. Reason: 15105)' while attempting 'RestoreContainer::ValidateTargetForCreation' on 'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008TESTI\MSSQL\DATA\AdventureWorks_Data.mdf'. Msg 3156, Level 16, State 8, Line 1 File 'AdventureWorks_Data' cannot be restored to 'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008TESTI\MSSQL\DATA\AdventureWorks_Data.mdf'. Use WITH MOVE to identify a valid location for the file. Msg 3634, Level 16, State 1, Line 1 The operating system returned the error '32(failed to retrieve text for this error. Reason: 15105)' while attempting 'RestoreContainer::ValidateTargetForCreation' on 'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008TESTI\MSSQL\DATA\AdventureWorks_Log.ldf'. Msg 3156, Level 16, State 8, Line 1 File 'AdventureWorks_Log' cannot be restored to 'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008TESTI\MSSQL\DATA\AdventureWorks_Log.ldf'. Use WITH MOVE to identify a valid location for the file. Msg 3119, Level 16, State 1, Line 1 Problems were identified while planning for the RESTORE statement. Previous messages provide details. Msg 3013, Level 16, State 1, Line 1 RESTORE DATABASE is terminating abnormally. 

问题在哪里? 我正在本地机器pipe理员上运行这些实例(SQL Server服务使用相同的帐户运行)。

'32(未能检索到此错误的文本,原因:15105)'

基于一点search这似乎是SQL Server的方式不正确报告操作系统(Win32 API)的错误。

错误32是ERROR_SHARING_VIOLATION“进程无法访问该文件,因为它正在被另一个进程使用”。

还有一些东西是打开文件的,这可能是其他连接,甚至是用于恢复的文件,都会打开AdventureWorks。

在我的情况是一件非常愚蠢的事情。 经过多次检查,我没有意识到SAS的开始date“未来”是不正确的。 在墨西哥,我们使用dd / mm / yyyy,问题是捕获的date是“mm / dd / yyyy”,那个date是未来的。 更新date后,恢复工作。

我有完全相同的问题。 将xxx.mdf更改为xxx2.mdf(和log) – 就是 – 只需更改名称即可解决问题。 恢复自动删除xxx.mdf file.dont真的知道是什么让它在过程中…如果你真的希望它是xxx.mdf你可以做一个额外的恢复时xxx2.mdf完成…奇怪,但它工作没有错误。 如此完整 – >原来的名字是xxx.mdf和xxx.ldf

恢复数据库ThedatebaseName
从磁盘='D:\ SQLbackup \ mybackup.bak'
WITH MOVE'PhysicalName'TO'D:\ SQL \ xxx2.mdf',
MOVE'PhysicalName_log'TO'D:\ SQL \ xxx2.ldf',
REPLACE,STATS

物理名称是您手动还原或使用时看到的名称:
恢复filelistonly
从磁盘='D:\ SQLbackup \ mybackup.bak'
它会显示名称。 祝你好运。

转到C:\ Program Files \ Microsoft SQL Server \ MSSQL10.SQL2008TESTI \ MSSQL \ DATA \授予您的SQL Server对此文件夹的“写入”权限。 (例如,对networking服务的大写入权限)

在我的情况下,.mdf和.ldb都位于另一个目录中,而不是要还原到的目录。 所以也检查目录。