【问题标题】:Error restoring a filelistonly from .bak file仅从 .bak 文件恢复文件列表时出错
【发布时间】: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


    【解决方案1】:

    错误消息准确地解释了发生了什么:您已将 .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 文件的卷、或过去使用过但不再存在或无法访问的备份位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-13
      • 2019-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多