我正在尝试从 .bak 文件恢复 filelistonly 并收到以下错误:
消息 3201,级别 16,状态 2,第 1 行无法打开备份设备“C:\Users...\myFile.bak”。操作系统错误 5(拒绝访问。)。
该文件最初被阻止,但我取消阻止它,所以这不应该是问题。
我正在尝试从 .bak 文件恢复 filelistonly 并收到以下错误:
消息 3201,级别 16,状态 2,第 1 行无法打开备份设备“C:\Users...\myFile.bak”。操作系统错误 5(拒绝访问。)。
该文件最初被阻止,但我取消阻止它,所以这不应该是问题。
错误消息准确地解释了发生了什么:您已将 .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 文件的卷或备份位置过去使用过但不再存在或无法访问的内容。