【问题标题】:Cannot unpublish component无法取消发布组件
【发布时间】:2012-12-03 14:27:02
【问题描述】:

我正在使用 Tridion R5.3。我正在尝试删除一个组件,但它显示为已发布。无论我做什么,我都无法将其取消发布。我对数据库运行了以下查询以确定组件的发布位置。

SELECT *
FROM [dbo].[PUBLISH_STATES] WITH (NOLOCK)
WHERE REFERENCE_ID = 268494

我收到了以下信息

  • 身份证号:45173
  • REFERENCE_ID:268494
  • ITEM_TYPE : 16
  • PUBLICATION_ID:4
  • 状态:1
  • STATE_CHANGE_DATE : 2006-08-18 12:50:25.597
  • PUBLICATION_TARGET_ID:2
  • TRUSTEE_ID:43
  • TEMPLATE_REFERENCE_ID:89798
  • TEMPLATE_ITEM_TYPE : 32

我尝试从 ID 为 2 的发布目标中取消发布组件,但没有成功。

删除数据库中的行是否安全?

更新

根据 Nuno 的建议,在阅读 another question 之后,我认为我必须取消发布相关的组件模板。我尝试了以下方法,在执行SetPublishedTo() 方法时得到了Type Mismatch

TDS.TDSE tdse = new TDS.TDSE();
var componentTemplate = (TDS.ComponentTemplate)tdse.GetObject("tcm:4-89798-32", TDSDefines.EnumOpenMode.OpenModeView);
componentTemplate.SetPublishedTo("tcm:4-268494", "tcm:0-2-65537", false, tdse.User);

【问题讨论】:

  • 不,你不会,删除数据库中的行通常会让你以后遇到麻烦。您是否尝试过更改已发布状态? (IIRC 你可以使用 TOM API 来做到这一点,就像以前的旧 PowerTool 一样)
  • 不小心把 tridion-2011 作为标签。我实际上使用的是5.3。我将尝试使用 TOM API 更改已发布状态并进行更新。
  • 在某些情况下,唯一的解决方案是将状态设置为 0。例如,如果您删除了组件发布到的发布目标。
  • 发布目标还在。它用于发布实时内容。我已将状态设置为 0,但没有发生任何事情。
  • 你的代码是为 x86 编译的吗?当我做 5.3 时(那是很久以前),我一直遇到 TOM Interops 的这个问题。您还可以尝试使用不同版本的 .NET 而不是 v4(互操作与版本 4 相比有所改变,例如引入可选参数),甚至尝试通过添加 cm_tom.dll 作为参考而不是使用 Tridion-来自己生成互操作提供互操作(注意:除非您知道自己在做什么,否则永远不要这样做!)

标签: tridion


【解决方案1】:

联系 SDL 支持后,解决方案是在相关组件的 ITEM_STATESPUBLISH_STATES 表中将 STATE 字段设置为 0

UPDATE dbo.ITEM_STATES
SET STATE = 0
WHERE ITEM_REFERENCE_ID = 268494

UPDATE dbo.PUBLISH_STATES
SET STATE = 0
WHERE REFERENCE_ID = 268494

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-26
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-04
    相关资源
    最近更新 更多