我目前正在测试 Tridion 2011 并且在创建带有上传内容的多媒体组件(而不是外部)时遇到问题。
我填写标题、架构、多媒体类型,从我的系统中选择一个文件,然后单击保存。我收到一条Saving item...
信息消息,然后大约 30 秒后我将收到一条The wait operation timed out
消息。
目录中似乎没有任何错误消息C:\Program Files (x86)\Tridion\log
。查看事件查看器,我看到以下与保存操作相关的信息
Unable to save Component (tcm:4-738361).
The wait operation timed out
Error Code:
0x8004033F (-2147220673)
Call stack:
System.Data.SqlClient.SqlConnection.OnError(SqlException,Boolean,Action`1)
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException,Boolean,Action`1)
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject,Boolean,Boolean)
System.Data.SqlClient.TdsParser.TryRun(RunBehavior,SqlCommand,SqlDataReader,BulkCopySimpleResultSet,TdsParserStateObject,Boolean&)
System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader,RunBehavior,String)
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior,RunBehavior,Boolean,Boolean,Int32,Task&,Boolean)
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior,RunBehavior,Boolean,String,TaskCompletionSource`1,Int32,Task&,Boolean)
System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1,String,Boolean,Int32,Boolean)
System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
Tridion.ContentManager.Data.AdoNet.Sql.SqlDatabaseUtilities.SetBinaryContent(Int32,Stream)
Tridion.ContentManager.Data.AdoNet.ContentManagement.ItemDataMapper.Tridion.ContentManager.Data.ContentManagement.IItemDataMapper.SetBinaryContent(Stream,TcmUri)
Tridion.ContentManager.ContentManagement.RepositoryLocalObject.SetBinaryContent(BinaryContent)
Tridion.ContentManager.ContentManagement.Component.OnSaved(SaveEventArgs)
Tridion.ContentManager.IdentifiableObject.Save(SaveEventArgs)
Tridion.ContentManager.ContentManagement.VersionedItem.Save(Boolean)
Tridion.ContentManager.ContentManagement.VersionedItem.Save()
Tridion.ContentManager.BLFacade.ContentManagement.VersionedItemFacade.UpdateAndCheckIn(UserContext,String,Boolean,Boolean)
XMLState.Save
Component.Save
由于另一个问题,我已经将 Content Manager 管理单元中的超时设置设置为高值(超过 10 分钟)。
如果有帮助的话,内容管理数据库中的BINARIES
表是 25GB。
有任何想法吗?谢谢。
编辑 1
根据 Bart Koopman 的建议,我的 DBA 重建了索引,但不认为事务日志对性能有任何影响。问题仍然存在。
编辑 2
我刚刚找到了错误的更多细节
Unable to save Component (tcm:0-0-0).
Timeout expired.
The timeout period elapsed prior to completion of the operation or the server is not responding.
A database error occurred while executing Stored Procedure "EDA_ITEMS_UPDATEBINARYCONTENT".EDA_ITEMS_UPDATEBINARYCONTENT
在查看此过程后,看起来以下语句可能是根本原因
SELECT 1 FROM BINARIES WHERE ID = @iBINARY_ID AND CONTENT IS NULL
我使用@iBINARY_ID 作为-1 手动执行它,2 分钟后它仍然没有完成。我假设当我插入一个新的多媒体组件时,查询将是类似的(即 id 将不存在于表中)。
BINARIES 表当前有一个NON-CLUSTERED
主键。也许解决方案是将其更改CLUSTERED
为主键?但是,我认为它是非聚集的是有原因的。