首页/数据/备份与容灾速查/SQL Server 单表恢复
本包目录(206 条)

SQL Server 单表恢复

误删表或误改数据时:把完整备份以新库名还原到同一实例,再用 T-SQL 把目标表数据导回,全过程不覆盖生产库。

备份与容灾速查数据更新于 2026-10-12

还原到新库并导回数据

还原到新库并导回数据
RESTORE DATABASE [AppDB_rescue]
  FROM DISK = N'D:\backup\AppDB-full.bak'
  WITH MOVE N'AppDB' TO N'D:\data\AppDB_rescue.mdf',
       MOVE N'AppDB_log' TO N'D:\data\AppDB_rescue_log.ldf',
       RECOVERY;

-- 只导回缺失的行(幂等)
INSERT INTO [AppDB].[dbo].[Orders] (Id, OrderNo, CreatedAt)
SELECT s.Id, s.OrderNo, s.CreatedAt
FROM [AppDB_rescue].[dbo].[Orders] AS s
WHERE NOT EXISTS (SELECT 1 FROM [AppDB].[dbo].[Orders] AS t WHERE t.Id = s.Id);
优点生产库只受影响于导回的动作,恢复过程完全隔离
前提实例磁盘空间足够还原一份完整副本
清理导回并验证后删除临时库,避免空间与合规风险
导回前核对表结构与索引:临时库版本与生产不一致时,导回语句要显式列出列名。

易错点

  • 还原时未用 MOVE 直接覆盖生产库:恢复动作造成更大事故
  • 导回用 SELECT * 且列顺序不一致:列错位写入脏数据

数据来源与参考

  • Microsoft Learn(RESTORE WITH MOVE / 表级数据恢复思路)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌