我可以捕获 "Cannot truncate table" 错误并改为删除吗?

Can I trap the "Cannot truncate table" error and Delete instead?

我知道 TRUNCATE TABLE "MyTable" 的有效替代是: DELETE FROM MyTable DBCC CHECKIDENT ('DATABASENAME.dbo.MyTable',RESEED, 0)

不过,我更愿意尽可能使用 TRUNCATE TABLE,但我有几个使用数据库复制的客户。对于这些客户,我得到错误:Cannot truncate table 'MyTable' because it is published for replication or enabled for Change Data Capture.

有没有办法 1) 预先测试 TRUNCATE 是否有效,或者 2) 以不会失败的方式发出 TRUNCATE 命令,而是留下一个可测试值(可能是 @@ERROR?)如果失败,它允许我执行 DELETE

begin try
    truncata table dbo.YourTableName;
end try
begin catch
    delete from dbo.YourTableName;
end catch

像这样...