2016-09-16 87 views
0

我们使用Kentico 8.2,并具有开发,测试,阶段和生产环境。我们会不时用生产中的当前内容刷新较低环境中的内容树。 Kentico支持这一点,但是在完成树的完全同步之后,节点大部分失序。手动同步所有节点订单相当费力。我们如何自动完成这一点?这是Kentico本机支持的吗?从生产环境到开发/测试/舞台环境的同步节点顺序

我想到的一个想法是在T-SQL中使用简单的更新语句,将生产CMS_Tree表连接到测试环境中的同一个表(加入NodeAliasPath),并将测试中的NodeOrder设置为等于生产中的NodeOrder值。

我们尽量不要在数据库本身做很多直接的数据操作,因为担心未知的副作用。在这种情况下,节点订单的这种更新是否会对数据库或Kentico应用程序中的其他任何内容产生不利影响?

+0

您是从生产环境中手动刷新它吗?你用什么方法来做这个“刷新”? – probrandono

+0

@probrandono是,只从生产刷新到较低的环境。要从Dev> Test> Stage> Prod,我们使用Staging应用程序作为“普通”。该方法正在同步从源环境到目标的整个内容树。 – neizan

+0

您在系统>设置中的节点顺序设置是什么? –

回答

0

不清楚节点乱序是什么意思,但是分段的意思是它会尝试通过创建小型分段任务来保持整个内容的同步=在相同的状态,当更新文档时(甚至移动他们周围)。

完成同步后,它将内容及其整个结构推回来,因此当您更改节点的顺序时,可以说生产会尝试将其压低到较低的位置,并在此过程中重写文档或创建新文档按照它们的当前顺序在CMS_Tree表中,但是由于它可能已经错过了其他文档的几个较小的任务,所以您最终得到的节点不在这个位置。

为什么不更频繁地使用或使用为此生成的任务使它们保持同步,否则可能导致环境不一致和暂存异常。

你是正确的,直接的数据库操作,特别是在内容树上,不建议,因为有FK约束,但它仍然可能会导致一个可怕的混乱,所以我会建议反对它。

+0

”你是什么意思的节点失序“...我的意思是在不同的环境中的同一条记录(加入NodeAliasPath)列dbo.CMS_Tree.NodeOrder的值是不同的。 – neizan

0

这是我会做的。从目标服务器,我将删除内容树,如果我必须从源服务器匹配。考虑到这一点,我现在要做一个从源代码到目标服务器的内容刷新。

我已经完成了多次这样的工作,就像一个魅力。

+0

是的,这基本上是我们所做的。从目标删除内容树。然后,从源头同步整个树。它一切正常,但树中的节点无序(例如,在页面应用程序中,我必须移动页面以使树匹配生产)。这是我需要自动化的。 – neizan

1

转到登台>页面>并选择您的顶级页面,然后单击同步当前子树应该正确同步页面及其顺序。在同步之前,您可能必须删除目标服务器上的所有页面以验证所有行。如果它不起作用,它可能是一个错误,你是否在最新的修补程序?

+0

我不确定该修补程序...我会检查出来的。在运行完全同步之前,我没有删除目标上的整个内容树。 – neizan