В настоящее время я тестирую Tridion 2011 и у меня возникают проблемы с созданием мультимедийных компонентов с загруженным контентом (в отличие от внешнего).
Я заполняю название, схему, тип мультимедиа, выбираю файл из своей системы и затем нажимаю save. Я получаю информационное сообщение 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 Snap-In с высокими значениями (более 10 минут) из-за еще одной проблемы.
Таблица BINARIES
в базе данных управления контентом составляет 25 ГБ, если это помогает.
Любые идеи? Спасибо.
Изменить 1
Следуя рекомендациям Барта Коопмана, мой 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 минуты он все еще не завершен. Я предполагаю, что когда я вставляю новый мультимедийный компонент, запрос будет чем-то подобным (т.е. Идентификатор не будет присутствовать в таблице).
В таблице BINARIES имеется NON-CLUSTERED
Основной ключ. Может быть, решение было бы изменить это на CLUSTERED
Основной ключ? Тем не менее, я предполагаю, что это НЕКОЛАСНО по какой-то причине.