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

SQL Data Migration Assistant生成部署脚本失败:触发器引用DELETED伪表报错

解决SQL Azure迁移中触发器引用DELETED伪表的DMA报错问题

问题原因

这个错误大概率是Data Migration Assistant(DMA)的解析bug——DELETED是SQL Server/Azure SQL触发器中内置的伪表,并非用户定义的表或默认约束,但DMA错误地将其识别为需要预先存在的数据库对象,从而抛出“不存在”的错误。Azure SQL本身完全支持触发器及DELETED/INSERTED伪表,核心问题出在DMA的脚本生成逻辑上。

临时解决办法

  • 手动提取触发器脚本单独部署
    从源SQL Server数据库直接导出该Delete触发器的T-SQL脚本,跳过DMA的自动脚本生成环节,在Azure SQL数据库部署完成后,手动执行触发器脚本完成创建。注意确保脚本无Azure SQL不支持的旧版T-SQL特性。

  • 临时修改触发器代码规避解析问题
    临时修改源数据库中的触发器,给DELETED伪表添加别名,例如:

    -- 原代码
    SELECT ColumnName FROM DELETED
    -- 修改后
    SELECT ColumnName FROM DELETED AS DEL
    

    重新运行DMA生成部署脚本,迁移完成后再将触发器改回原代码。

  • 升级DMA到最新版本
    这类解析类bug通常会在后续版本中修复,检查并安装最新版Data Migration Assistant后重试。

  • 更换迁移工具
    如果上述方法无效,可尝试使用Azure Database Migration Service(DMS)或SQL Server Management Studio(SSMS)的“部署数据库到Azure SQL”功能,这些工具对触发器伪表的解析逻辑可能更准确。

关于是否为DMA bug的确认

若升级到最新版DMA后问题仍存在,基本可以确定是DMA的解析bug,可通过微软官方反馈渠道提交该问题,推动官方修复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 01:29:52