1. 清除复制标记
-- 启用系统表更新 EXEC sp_configure 'allow updates', 1 RECONFIGURE WITH OVERRIDE GO -- 清除复制标记 BEGIN TRANSACTION UPDATE sysobjects SET replinfo = 0 WHERE name = 'temptb' COMMIT TRANSACTION GO -- 恢复系统表保护 EXEC sp_configure 'allow updates', 0 RECONFIGURE WITH OVERRIDE GO
2. 专用存储过程处理
若上述方法无效,可使用专用存储过程清除复制关联
-- 对于数据库级复制标记 EXEC sp_removedbreplication '当前数据库名' -- 对于表级复制标记 EXEC sp_msunmarkreplinfo 'temptb'
3. 对象冲突解决
当遇到对象已存在错误(2714)时,建议采用以下流程26:
先检查是否存在同名临时表
使用条件删除语句:
IF EXISTS (SELECT * FROM sys.objects WHERE name = 'temptb') DROP TABLE temptb
4. 完整处理流程
推荐按此顺序执行操作
-- 步骤1:尝试标准删除 BEGIN TRY DROP TABLE temptb END TRY BEGIN CATCH -- 步骤2:清除复制标记 EXEC sp_msunmarkreplinfo 'temptb' -- 步骤3:强制更新系统表 EXEC sp_configure 'allow updates', 1 RECONFIGURE WITH OVERRIDE UPDATE sysobjects SET replinfo = 0 WHERE name = 'temptb' EXEC sp_configure 'allow updates', 0 RECONFIGURE WITH OVERRIDE -- 步骤4:再次尝试删除 DROP TABLE temptb END CATCH
本文为宁若水!原创文章,转载无需和我联系,但请注明来自[若水]博客 www.lalaya.net