我们如何重新同步Tridion CM认为发布到特定发布目标的内容以及实际发布到该目标的内容?


23

我们遇到了Tridion CM认为发布到特定发布目标(组件和/或页面)与实际位于该发布目标上的内容不匹配的问题。

例如,我们有一个日常工作,它向Broker数据库查询“过期”组件列表,然后尝试取消发布它们。每天,查询返回的大约400个组件都是Tridion CM不认为发布到代理数据库关联的发布目标的项目。这导致取消发布这400个组件故障,并且组件继续显示为我们针对代理数据库运行的查询结果。

我们发现如果我们重新发布组件,然后取消发布它,我们可以纠正这个问题,但这看起来有些不合适。由于CM认为这些组件并未发布,因此我们也有一些不幸的情况,即从Tridion中删除组件,但该组件仍存在于Broker数据库中,现在我们甚至无法使用kludgy解决方案来取消发布这些项目。

我们遇到了一些与页面类似的问题,并且我们也有一些实例,其中CM认为组件/页面已发布到发布目标,但组件/页面实际上并不存在于该目标上。

有关如何获取CM中项目的发布状态的任何想法与发布目标实际发布给他们的内容相同步吗?

  0

伟大的问题。 20 2月. 132013-02-20 20:49:26

12

有多种方法,使这样的事情可以处理...

Unresolve分辨

的外表套上出版商解决过程中的一个来确定,没有什么是未发表的,因为项x不发布到对象物Y。可能会编写一个自定义解析器来改变这种行为,以便取消发布指令仍然发送给部署者。

在工程师

如果你不这样做这将是很容易做到,如果你有OData的传出端,不是​​那么容易的。您可以编写一个程序,通过调用链接服务来“双重检查”每个项目的发布状态,然后使用旧的,不赞成使用的COM API更改CM中的发布状态。

  0

只要项目在数据库中发布,就可以查询OData。 20 2月. 132013-02-20 09:45:11

+1

[不得不添加一个额外的评论,因为我一直在收到“你可能每5秒只能编辑一条评论。”] 但是,您可以检查代理商查询结果再次查看CM是否已发布到发布目标。如果是,只需取消发布它们,否则将状态设置为使用旧的已弃用的COM API发布/重新发布它们,然后取消发布。 20 2月. 132013-02-20 09:50:55

  0

LOL Nuno,我不会使用其中任何一种方法:)打电话给我老式的,但我宁愿开始新的空CD DB :) 22 2月. 132013-02-22 19:20:14

  0

你是老式的Mihai:p 22 2月. 132013-02-22 20:23:57


9

这种情况非常敏感,但不幸的是,如您所描述的,您可以非常轻松地进入此状态(例如,在数据库备份/恢复之后,旧的发布目标不再可用,但以前的项目状态保留发布到这些目标)。

对于这种情况的官方修复方法是重新创建发布目标并取消发布。由于几个原因,这可能很难实现,甚至无法实现,所以下面的解决方案实际上是一种黑客攻击,迫使您手动修改CM DB。 我无法表达足够强大的这种操作,它可以使您的系统瘫痪。更糟糕的是,你不会马上意识到它已经陷入瘫痪,但是由于CMS认为该项目已经发布到某个目标,项目可能无法在将来发布。因此,在尝试之前,先尝试以下方法并进行数据库备份。最后一个恐慌:)如果您设法削弱您的数据库,客户支持不会帮助您修复它!而且你的系统将不再被支持。

因此,您可以通过修改(即删除)CM数据库表ITEM_STATESPUBLISH_STATES中的相关记录来更改Tridion项目的发布状态。当然,您只应删除CMS中不再提供的列PUBLICATION_TARGET_ID

先备份!!!祝你好运!

编辑:我看到你正在寻找系统的内容管理器和内容传递方面的实际SYNC,因此我的回答只是部分内容,因为它只处理CM端。我担心没有办法通过CD'重新同步'您的CM。想到的唯一解决方案非常激烈:从头开始 - 1)清空CM表ITEM_STATES和PUBLISH_STATES; 2)拿一个空的Content Delivery DB(即经纪人DB);和3)执行完整的发布。

+1

从Tridion的第一天起,我们就已经拥有了相同的出版目标(2007年底的v5.2),所以对我们来说,旧版出版物的目标不再可用。我们认为(但不能证明)其中大部分源于他们或com +服务需要在发布项目过程中重新启动的发布/部署者服务的问题。我不希望直接更新CM数据库,但是你让我想,也许是一个SQL查询,它比较CM和Broker数据库中项目的发布状态,这里是为了与Nuno的一个建议解决方案结合使用。 20 2月. 132013-02-20 03:30:18

  0

使用API​​代替它是否同样糟糕?例如,[旧PowerTools](http://sdltridionworld.com/community/extension_overview/powertools.aspx)页面/组件“设置未发布”工具。 10 3月. 132013-03-10 07:02:47

  0

这只是一半不好;) 12 3月. 132013-03-12 20:37:49


8

也许你可以做到这一点。

  1. 添加一个新的代理数据库。
  2. 配置这一点,以便它被公布的,当你发布到问题的目标
  3. 发布您的整个网站(或你认为应该公布它的部分)
  4. 使用新的经纪人数据库,替换当前的一个

第二步可以通过添加另一个目标加上一个完整的CD安装,或者通过增加存储规范(因为我看到你的问题被标记为2011)

当然可以实现,这整个的做法是一个精心策划的项目,而且你需要详细介绍一些细节,但最终会让你的系统同步。

变化的主题:你可能想建立一个完全独立的出版指标,用它来创建你更换数据库,备份,取消发布的一切,并拉动开关。


4

试图做任何上述的前不要与内容波特所有出版物的出口。所以如果事情发展到SNAFU,你可以在以后重新安装新的CM。这样你的任何项目都不会处于“发布到”状态。

+3

试图使用的想法内容搬运工出口或进口数十万个组件/页面有点可怕。 08 5月. 132013-05-08 05:39:23


3

我们已经观察到了同样的问题,并联系SDL客户支持。他们建议我们捕获运输包以取消发布,然后获取它的内容,对其进行更改,以便它在经纪人中引用“孤儿”物品,并将其发送到经纪人的传入文件夹中。这确实是一个巧妙的过程,因为你模拟取消发布过程。我们创建了基于tcm id创建这些软件包的.net项目,我们只是运行工具,复制zip文件和瞧,我们的经纪人是干净的。 :)