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

SQL Azure运行Update查询报错:无效对象名'DataSync.provision_marker_dss'

问题根因

该报错是Azure SQL数据同步的残留对象导致的:
你删除同步组、同步代理后,原数据库中数据同步为业务表自动生成的DML触发器、存储过程没有被同步清理;如果你是通过导入旧库结构的方式重建新库,这些残留的触发器会随表结构一起被导入到新库。
当你执行UPDATE操作时,触发了对应表残留的finstock06_dss_update_trigger更新触发器,触发器内部依赖的DataSync.provision_marker_dss同步系统表已经被清理,因此抛出对象不存在的错误。

解决步骤
  • 第一步:先查询当前库中所有残留的同步相关触发器,确认残留对象范围,运行如下SQL:
SELECT 
    name AS trigger_name,
    OBJECT_NAME(parent_id) AS associated_table_name
FROM sys.triggers
WHERE name LIKE '%_dss_%_trigger'
  • 第二步:确认查询结果中的触发器均为同步自动生成(名称带_dss_标识的均为Azure数据同步系统生成对象,非用户自定义的话可直接删除),执行批量删除脚本:
DECLARE @TriggerName NVARCHAR(MAX)
DECLARE TriggerCursor CURSOR FOR
SELECT name FROM sys.triggers WHERE name LIKE '%_dss_%_trigger'

OPEN TriggerCursor
FETCH NEXT FROM TriggerCursor INTO @TriggerName

WHILE @@FETCH_STATUS = 0
BEGIN
    EXEC('DROP TRIGGER ' + @TriggerName)
    FETCH NEXT FROM TriggerCursor INTO @TriggerName
END

CLOSE TriggerCursor
DEALLOCATE TriggerCursor
  • 第三步(可选):如果后续不会再使用Azure SQL数据同步功能,可同步清理残留的同步存储过程和空架构:
-- 清理同步生成的dss前缀存储过程
DECLARE @ProcName NVARCHAR(MAX)
DECLARE ProcCursor CURSOR FOR
SELECT name FROM sys.procedures WHERE name LIKE '%_dss_%'

OPEN ProcCursor
FETCH NEXT FROM ProcCursor INTO @ProcName

WHILE @@FETCH_STATUS = 0
BEGIN
    EXEC('DROP PROCEDURE ' + @ProcName)
    FETCH NEXT FROM ProcCursor INTO @ProcName
END

CLOSE ProcCursor
DEALLOCATE ProcCursor

-- 确认DataSync架构下无自定义对象后删除架构
IF EXISTS (SELECT * FROM sys.schemas WHERE name = 'DataSync')
DROP SCHEMA DataSync
验证

操作完成后重新执行之前报错的UPDATE语句,即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 18:15:00