【发布时间】: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