【发布时间】:2012-06-22 20:15:35
【问题描述】:
我正在尝试从 .bak 文件恢复 filelistonly,但出现以下错误:
Msg 3201, Level 16, State 2, Line 1 无法打开备份设备 'C:\Users...\myFile.bak'。操作系统错误 5(访问权限为 拒绝。)。
该文件最初被阻止,但我取消阻止它,所以这应该不是问题。
【问题讨论】:
标签: sql sql-server-2012 database-restore
我正在尝试从 .bak 文件恢复 filelistonly,但出现以下错误:
Msg 3201, Level 16, State 2, Line 1 无法打开备份设备 'C:\Users...\myFile.bak'。操作系统错误 5(访问权限为 拒绝。)。
该文件最初被阻止,但我取消阻止它,所以这应该不是问题。
【问题讨论】:
标签: sql sql-server-2012 database-restore
错误消息准确地解释了发生了什么:您已将 .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 文件的卷、或过去使用过但不再存在或无法访问的备份位置。
【讨论】: