我正在尝试从.bak文件中恢复filelist,并收到以下错误:
消息3201,级别16,状态2,行1无法打开备份设备 'C:\用户\ myFile.bak'。操作系统错误5(访问是 拒绝)。
该文件最初被阻止,但我取消阻止它,所以这不应该是问题。
答案 0 :(得分:2)
错误消息准确说明了发生了什么:您已将.BAK文件放在SQL Server服务帐户无权访问的文件夹中。
您可以通过向SQL Server服务帐户授予对配置文件文件夹的访问权限来“修复”此问题,但这是对安全最佳做法的不必要违反。
将文件移动到SQL Server服务帐户已具有本机访问权限的位置(如备份或数据目录)要容易得多。您可以通过查看以下查询的结果找到数据文件夹(可能有多个有效位置):
SELECT DISTINCT SUBSTRING(physical_name, 1, LEN(physical_name)
- CHARINDEX('\', REVERSE(physical_name)) + 1)
FROM [master].sys.master_files
WHERE [type] = 0;
如果您已备份任何数据库(希望您拥有!),您可以通过以下方式找到一些有效的备份位置:
SELECT DISTINCT SUBSTRING(physical_device_name, 1, LEN(physical_device_name)
- CHARINDEX('\', REVERSE(physical_device_name)) + 1)
FROM msdb.dbo.backupmediafamily;
当然,这些都没有考虑到因素,例如只读卷上的只读数据文件,SQL Server可能有权访问的卷,但是没有,但是没有足够的.BAK文件可用空间的卷,或备份过去曾使用但不再存在或可访问的位置。