从.bak文件恢复文件列表时出错

时间:2012-06-20 16:21:45

标签: sql sql-server-2012 database-restore

我正在尝试从.bak文件中恢复filelist,并收到以下错误:

  

消息3201,级别16,状态2,行1无法打开备份设备   'C:\用户\ myFile.bak'。操作系统错误5(访问是   拒绝)。

该文件最初被阻止,但我取消阻止它,所以这不应该是问题。

1 个答案:

答案 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文件可用空间的卷,或备份过去曾使用但不再存在或可访问的位置。

相关问题