You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSMS无法识别AdventureWorks2012的.bak文件,还原报错求助

解决还原AdventureWorks2012.bak时的"No backup set selected to be restored"错误

我碰到过好多次这个问题,咱们一步步排查解决:

1. 先确认备份集是否被正确选中

这是最容易漏掉的细节:当你指定「源设备」并选中.bak文件后,一定要切换到「选择备份集」选项卡,勾选里面对应的备份条目(通常是一个或多个复选框)。很多人只选了源文件就直接点下一步,系统没识别到要还原的具体备份集,自然就会报这个错。

2. 检查备份文件的有效性与版本兼容性

  • 先确认你的AdventureWorks2012.bak文件是完整的:如果是从官网下载的,重新校验文件哈希值,或者直接重新下载(有时候下载过程中会出现文件损坏)。
  • 核对SQL Server版本:AdventureWorks2012是针对SQL Server 2012及以上版本制作的,如果你用的是更低版本(比如2008),根本无法还原。可以打开SSMS,通过「帮助」→「关于」查看你的SQL Server版本,确保它≥2012。

3. 确保SQL Server服务账户拥有文件访问权限

你已经给文件夹加了当前用户的完全权限,但SQL Server是通过自身的服务账户读取备份文件的,不是你的登录账户。操作步骤:

  • 按下Win+R输入services.msc打开「服务」,找到你的SQL Server服务(一般叫SQL Server (MSSQLSERVER)),右键→属性→登录,查看它的登录账户。
  • 找到存放.bak文件的文件夹,右键→属性→安全→编辑→添加,把刚才查到的SQL服务账户加进去,赋予它「读取」和「读取及执行」权限(给完全权限也没问题)。

4. 尝试用T-SQL命令还原(绕过SSMS界面的小bug)

有时候SSMS图形界面会出现莫名的问题,用命令还原更可靠。打开SSMS的查询窗口,执行以下命令(记得替换<你的bak文件路径>和<目标数据库名>):

-- 先查看备份文件里的逻辑文件名,确保后续MOVE语句正确
RESTORE FILELISTONLY FROM DISK = N'<你的bak文件路径>';

-- 执行还原
RESTORE DATABASE <目标数据库名>
FROM DISK = N'<你的bak文件路径>'
WITH FILE = 1,  -- 若有多个备份集,可尝试2、3等编号
MOVE N'AdventureWorks2012_Data' TO N'<数据文件存放路径>\AdventureWorks2012.mdf',
MOVE N'AdventureWorks2012_Log' TO N'<日志文件存放路径>\AdventureWorks2012.ldf',
NOUNLOAD, STATS = 5, REPLACE;

5. 排查目标数据库状态

如果目标数据库已经存在,确保它没有异常状态:

  • 右键目标数据库→属性→选项,检查「数据库可用性选项」,确认不是只读状态,且能正常访问。
  • 或者在还原的「选项」卡下勾选「覆盖现有数据库(WITH REPLACE)」,强制覆盖已有数据库。

内容的提问来源于stack exchange,提问作者LuísA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:22:08