我无法截断表,因为它失败了,并且出现了与复制相关的错误

时间:2018-12-12 04:04:05

标签: sql sql-server database

我正在尝试截断表,但失败,并显示以下错误Cannot truncate table 'Subscriptions' because it is published for replication or enabled for Change Data Capture.

不确定如何解决此错误,此问题与MS SQL SERVER 2014有关

我寻找了这个Google,但没有找到一个明确的答案示例https://www.sqlservercentral.com/Forums/Topic1701086-2799-1.aspx

https://www.sqlteam.com/forums/topic.asp?TOPIC_ID=80545

有一个简单的解决方案,因为我没有数据库的管理特权,因为它是由第三方托管的

2 个答案:

答案 0 :(得分:1)

在某些情况下,例如复制/外键约束等,不能使用截断。

根据Microsoft documentation,您需要使用删除。

  

限制

     

您不能在以下表上使用TRUNCATE TABLE:

     

由FOREIGN KEY约束引用。 (您可以截断一个表   具有引用自身的外键。)

     

参与索引视图。

     

使用事务复制或合并复制进行发布。

     

对于具有一个或多个这些特征的表,请使用DELETE   声明。

     

TRUNCATE TABLE无法激活触发器,因为该操作确实   不记录单个行的删除。有关更多信息,请参见CREATE。   触发器(Transact-SQL)。

     

在Azure SQL数据仓库和并行数据仓库中:

     

EXPLAIN语句中不允许使用TRUNCATE TABLE。

     

TRUNCATE TABLE不能在事务内部运行。

答案 1 :(得分:1)

对于此错误,您可以参考以下链接。

https://blog.sqlauthority.com/2009/12/25/sql-server-cdc-and-truncate-cannot-truncate-table-because-it-is-published-for-replication-or-enabled-for-change-data-capture/

它清楚地说明了该错误发生的条件以及如何解决该错误,即通过在该表上禁用“更改数据捕获”来实现。