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

Azure同服务器下从其他数据库恢复误删表数据的可行方案咨询

我太懂这种误删数据的慌乱了!Azure SQL确实没有内置的跨库直接恢复单表数据的功能,但咱们有几个靠谱的办法能把db2里的users表数据导回db1,一步步来:

方案1:直接用T-SQL跨库插入(最快最直接)

因为两个数据库在同一Azure SQL服务器上,只要你有足够的权限,直接写SQL就能搞定:

  • 先确认db1的users表和db2的结构完全匹配(字段名、数据类型、约束都得对应),如果结构有差异,得先调整db1的表结构;
  • 执行插入语句(如果db1的users表还有残留数据,先考虑要不要清空,用TRUNCATE TABLE users或者DELETE FROM users,一定要谨慎操作!):
USE db1;
GO
-- 全量插入db2的users数据到db1
INSERT INTO users
SELECT * FROM db2.dbo.users;

-- 如果只需要恢复特定范围的数据,加WHERE条件过滤
-- INSERT INTO users
-- SELECT * FROM db2.dbo.users WHERE user_id BETWEEN 100 AND 200;
GO
  • 要是担心主键冲突,用MERGE语句更稳妥,能根据主键判断是插入新数据还是更新现有数据:
USE db1;
GO
MERGE INTO users AS target
USING db2.dbo.users AS source
ON target.user_id = source.user_id -- 这里替换成你的主键字段
WHEN NOT MATCHED THEN
    INSERT (user_id, username, email, create_time) -- 列出所有字段
    VALUES (source.user_id, source.username, source.email, source.create_time);
GO

方案2:导出-导入BACPAC文件(适合需要先校验数据的场景)

如果不想直接写SQL,或者想先确认数据没问题再导入:

  1. 导出db2的users表:在Azure门户找到db2数据库,进入「导出」选项,选择导出到你的Azure存储账户,在导出设置里指定只导出users表(避免导出整个库浪费时间);
  2. 导入到db1:找到db1数据库,进入「导入」选项,选择刚才导出的BACPAC文件,导入时指定只导入users表;
  3. 这个方法的好处是可以先把BACPAC下载到本地,用SQL Server Management Studio(SSMS)打开校验数据,没问题再导入生产库,风险更低。

方案3:临时配置事务复制(适合大数据量或增量同步)

如果users表数据量很大,或者之后需要临时保持两个表的同步,可以用Azure SQL的事务复制:

  • 把db2设置为发布服务器,创建一个只包含users表的发布;
  • 把db1设置为订阅服务器,订阅这个发布,触发数据同步;
  • 数据同步完成后,直接删除发布和订阅即可,不会留下长期影响。

重要提醒

不管用哪个方案,恢复前一定要给db1做一次完整备份或者数据库快照! 万一操作失误,还能快速回滚到之前的状态。

内容的提问来源于stack exchange,提问作者Faseeh Haris

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:23:23