常见问题 SQL Server备份还原数据库占用
目标库正在使用导致还原失败怎么办
还原失败因目标库有连接占用,用 WITH REPLACE 强还、先杀会话或单用户模式,以及误覆盖风险提醒。
发布于 2026/11/11
所属频道 SQL Server
简短答案
还原会独占目标库。有活动连接时,报还原相关的 0x8004 类错误。处理:杀掉占用会话,或加 WITH REPLACE 强制覆盖,或先把库切到单用户模式。
排查步骤
- 查谁占着库:
SELECT session_id, login_name, host_name
FROM sys.dm_exec_sessions
WHERE database_id = DB_ID(N'库名');
- 杀掉会话(确认业务允许):
-- 逐条执行
KILL 会话ID;
- 用
WITH REPLACE强还(会丢弃目标库当前数据,先确认可以覆盖):
RESTORE DATABASE 库名 FROM DISK = N'路径' WITH REPLACE;
- 或用单用户模式过渡:
ALTER DATABASE 库名 SET SINGLE_USER WITH ROLLBACK IMMEDIATE;再还原,完成后恢复MULTI_USER。 - 在 SSMS 还原向导里勾「覆盖现有数据库」即对应
WITH REPLACE,操作前务必核对目标库名。 - 涉及生产库时,先做全量备份留后路,版本能力以 SQL Server 2022 Developer 条目页核对。
操作小结
- 先确认能否覆盖:
WITH REPLACE不可逆。 - 杀会话或单用户模式是稳妥路径。
- 生产库还原前留一份全量备份。