在从SDL Tridion 5.2迁移到2011 SP1之后尝试发布或取消发布某些页面和结构组时,我们遇到了问题.
发布事务在Committing Deployment阶段失败,并返回以下错误消息:
阶段:部署准备提交阶段失败,无法准备事务:tcm:0-682623-66560,null,null
cd_deployer.exe服务也几乎同时以100%的CPU使用率运行.
我们还在cd_deployer.log和cd_core.log文件中获取以下信息:
2012-05-02 07:32:09,346 ERROR DeployPipelineExecutor - Unable to start processing deployment package with transactionId: tcm:0-682520-66560
2012-05-02 07:36:36,071 ERROR DeployPipelineExecutor - Final attempt in Phase: Deployment Prepare Commit Phase failed for transaction: tcm:0-682526-66560
2012-05-02 07:36:36,071 ERROR DeployPipelineExecutor - Original stacktrace for transaction: tcm:0-682526-66560
com.tridion.deployer.ProcessingException: Unable to prepare transaction: tcm:0-682526-66560, null, null
at com.tridion.deployer.phases.PreCommitPhase.handleFailure(PreCommitPhase.java:120) ~[cd_deployer.jar:na]
at com.tridion.deployer.phases.PreCommitPhase.execute(PreCommitPhase.java:101) ~[cd_deployer.jar:na]
at com.tridion.deployer.phases.DeployPipelineExecutor.runMainExecutePhase(DeployPipelineExecutor.java:186) [cd_deployer.jar:na]
at com.tridion.deployer.phases.DeployPipelineExecutor.doExecute(DeployPipelineExecutor.java:97) [cd_deployer.jar:na]
at com.tridion.deployer.phases.DeployPipelineExecutor.execute(DeployPipelineExecutor.java:61) [cd_deployer.jar:na]
at com.tridion.deployer.TransactionManager.handleDeployPackage(TransactionManager.java:80) [cd_deployer.jar:na]
at com.tridion.deployer.queue.QueueLocationHandler$1.run(QueueLocationHandler.java:176) [cd_deployer.jar:na]
at …Run Code Online (Sandbox Code Playgroud) 我们有许多自定义脚本,这些脚本是用VBScript for SDL Tridion 5.2编写的.这些脚本使用TOM API在Tridion对象上执行许多批量操作.
在最近升级到2011 SP1之后,我们现在需要更改大量组件演示中使用的组件模板,最好的方法是运行脚本来更新必要的页面和组件演示.
以前,我们可以运行一些类似于下面代码的VBScript来进行此更改.在2011年,我们仍然可以运行这些脚本来进行这种改变吗?
它是否像在Content Manager服务器(Windows 2008 R2)上启用Classic ASP一样简单?
<%
'##### CREATE TRIDION API OBJECTS #####
Set TDSE = Server.CreateObject("TDS.TDSE")
Call TDSE.Initialize()
'##### CALL FUNCTION - PASS IN STRUCTURE GROUP STARTING POINT #####
Call UpdateComponentTemplates(TDSE.GetObject("tcm:44-39929-4", OpenModeEditWithFallback, "tcm:0-44-1"))
Sub UpdateComponentTemplates(arg_strStructureGroup)
'##### GET ALL ITEMS WITHIN SPECIFIED STRUCTURE GROUP #####
For Each objItem In arg_strStructureGroup.GetItems
'##### IF ITEM IS A STRUCTURE GROUP #####
If TypeName(objItem) = "StructureGroup" Then
'##### CALL THE FUNCTION AGAIN, PASSING IN THE STRUCTURE …Run Code Online (Sandbox Code Playgroud) 我使用存储过程搜索并使用SQL IN运算符返回匹配ID列表时遇到一些问题.我认为这个问题与数据类型有关.
参数作为字符串'32,1,5,78,43'传递给存储过程 - 这需要作为IN运算符传递到查询中以搜索字段Column1.Bigint中此字段的数据类型.
DECLARE @TEST varchar(1000)
SET @TEST = REPLACE('32,1,5,78,43', '''','')
SELECT Column1, Column2
FROM Table
WHERE Column1 IN(@TEST)
Run Code Online (Sandbox Code Playgroud)
试图删除字符串中的引号似乎并不工作,我得到一个错误回了句"错误转换数据类型为varchar为bigint."
在没有存储过程的情况下运行代码,并将值直接放入IN运算符(不带引号),然后可以正常工作并返回正确的值.例如
SELECT Column1, Column2
FROM Table
WHERE Column1 IN(32,1,5,78,43)
Run Code Online (Sandbox Code Playgroud)
请问有人可以告诉我这里的错误吗?