环境:windows 2016 + sqlserver 2017
备份时正常,还原时一直卡在下面的界面不动
查看日志发现两个报错
The operating system returned the error '21(设备未就绪。)' while attempting 'GetDiskFreeSpace' on 'Z:\'.
The operating system returned the error '21(设备未就绪。)' while attempting 'GetDiskFreeSpace' on 'A:\'.
查看发现A是软盘,Z是DVD驱动器,感觉还原应该不会用到这俩,不知道为啥报这种错
打开profile可以发现还原报错时有以下记录
所以这个报错应该跟sys.dm_os_enumerate_fixed_drives视图有关系
查询这个视图,会发现同样的报错
select * from sys.dm_os_enumerate_fixed_drives;
继续搜索发现sys.dm_os_enumerate_fixed_drives是sqlserver 2017新加的一个视图,用来替代原来的xp_fixeddrives获取空闲空间,所以这应该还是2017才会遇到的问题
解决方法:
法1. 开始 -> 搜索“设备管理器” -> 禁用软盘和DVD驱动器
禁用之后可以看到查询视图不再报错
还原也能正常进行
法2:禁用该新特性(不大推荐)
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'SMO and DMO XPs', 0;
GO
RECONFIGURE
GO
参考
Dharmendra Keshari - SQL Server on Linux, SQL Server
SQL Server Restore Database Error in SQL Server Management Studio