首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法获取发布队列项目的列表。超时已过期

无法获取发布队列项目的列表。超时已过期
EN

Stack Overflow用户
提问于 2012-05-15 10:40:10
回答 6查看 975关注 0票数 5

我在Tridion2009 SP1上。在某一时刻,查看所有用户(即不是过滤器)的发布队列的功能刚刚停止工作。在CM GUI中,收到超时错误:

代码语言:javascript
复制
(80040E31) Timeout expired
Unable to get list of publishing queue items.

SQLUtilities.OpenRecordsetByStoredProcedure
SystemDAL.GetListData
SystemBLST.lObjListPublishTransactions
SystemBLST.IBLSystemST_GetListData
ManagementInfo.GetListPublishQueue
Request.GetList

因此,我尝试使用发布队列管理器强大的工具来清理队列,但这只抛出了一个500错误,这与队列中的项太多是一致的。

然后,我尝试使用Tridion清除工具清除队列,但它崩溃了几秒钟,并返回相同的错误:

代码语言:javascript
复制
14-May-2012 21:10:12 Log cleared.
14-May-2012 21:10:12 Purge action started at 14-May-2012 21:10:12
14-May-2012 21:10:12 Keeping the last 5 versions.
14-May-2012 21:10:12 Recursive mode: False
14-May-2012 21:11:12 FAILED: <?xml version="1.0"?>
<tcm:Error xmlns:tcm="http://www.tridion.com/ContentManager/5.0" ErrorCode="80040E31" Category="7" Source="Kernel" Severity="1">
    <tcm:Line ErrorCode="80040E31" Cause="false" MessageID="4613"><![CDATA[Unable to get list of publishing queue items.]]>
        <tcm:Token>RESID_4485</tcm:Token>
        <tcm:Token>RESID_15821</tcm:Token>
    </tcm:Line>
    <tcm:Line ErrorCode="80040E31" Cause="true">
        <![CDATA[Timeout expired]]>
    </tcm:Line>
    <tcm:Details>
        <tcm:CallStack>
            <tcm:Location>SQLUtilities.OpenRecordsetByStoredProcedure</tcm:Location>
            <tcm:Location>SystemDAL.GetListData</tcm:Location>               
            <tcm:Location>SystemBLST.lObjListPublishTransactions</tcm:Location>
            <tcm:Location>SystemBLST.IBLSystemST_GetListData</tcm:Location>
            <tcm:Location>ManagementInfo.GetListPublishQueue</tcm:Location>
        </tcm:CallStack>
     </tcm:Details>
</tcm:Error>

所有事件日志都显示完全相同的错误。哦,是的,我已经尝试过重启COM+、Publisher和Transport服务。

因此,发布队列似乎处于不可访问状态。你能建议一下原因或我的下一步行动吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-05-15 16:11:24

有许多你可以尝试的东西;

在代码中:

  1. 将数据集减少到可能的特定时间段(每周、每月)
  2. 逐个选择特定的统计信息类型(失败、成功等)

在基础设施上:

  1. 我不确定你想做什么,但如果你只是删除事务,也许只需使用清除工具(但在编写代码时,我假设它对于您的用例来说还不够聪明) Tridion usecase
  2. Ensure使用清除工具删除与您的Tridion无关的较旧事务提到的数据库是完整的optimized
  3. (as )增加
  4. 管理单元中的超时时间
  5. 确保您拥有适用于您的Tridion版本的最新修补程序( 2009 GA和SP1
  6. 的队列性能发生了许多变化通常确保硬件正在执行
票数 4
EN

Stack Overflow用户

发布于 2012-05-15 12:20:20

也许您可以查询发布事务表来获得所有事务的tcm uri的列表,将其移动到自定义数据库中,并使用TOM.NET API /核心服务单独打开每个事务,并根据状态使用API将其删除。

这样,您可以以受控的方式删除事务,而无需直接处理数据库。

票数 5
EN

Stack Overflow用户

发布于 2012-05-15 11:17:25

您对SQLServer和Internet Information Server的超时设置是什么?如果它们是股票默认值(不记得它们是什么),那么可能值得尝试增加它们。

如果它仍然失败,也许可以在数据库上进行跟踪,看看为什么花了这么长时间。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10593512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档