Epicor 10 (ERP) Ошибка отчетности SSRS: максимум 1024 столбца возвращены
Привет всем, это может быть выстрел в темноте, но я ищу помощь по сортировке ошибки, которая находится в определении отчета или в отчете отчета о службах отчетов Sequel Server Reporting Services (SSRS). Эта ошибка препятствует печати определенной формы (персонализированной упаковки) при наличии нескольких строк. Просто отметим, что форма отчета разработана с использованием Microsoft Report Builder и получает данные от Epicor, у которого есть связанное «Определение данных отчета». Консультант, настроивший упаковочный листок, больше не доступен, и без его заметок я пытаюсь понять, что [здесь] [1] было изменено исходное определение данных или форма отчета, которые могли бы вызвать эту ошибку ,
Хорошо, теперь проблема:
При попытке распечатать сальдо упаковки нескольких позиций мы получим эту ошибку:
- Записи SSRS не отображаются, когда используется (выберите все), но при выборе особого значения
- Создатель отчетов SSRS, как скрыть конкретное текстовое поле, экспортирующее в Excel
- sp_send_dbmail вставить файл mhtml в тело
- Выполнить набор данных на основе значения параметра -SSRS
- Отобразить имя столбца SQL как значение строки в SSRS-матрице
Программа Ice.Services.Lib.RunTask вызвала неожиданное исключение со следующим сообщением:
RunTask: CREATE VIEW не удалось, поскольку столбец «OTSCity» в поле зрения «RptLabels_8B03042B0E8248588E5DECCC9D76BB89» превышает максимальное число 1024 столбцов.
Некоторая информация, которую я собрал во время моей охоты и клевания:
OTSCITY – это поле в таблице OrderHED (заголовок заказа). Таблица OrderHed является одной из (25) таблиц отчета в определении данных, однако не похоже, что она связана с какой-либо другой таблицей, а поле «OTSCITY» исключено (как ярлык, так и столбец) как в исходном, так и в индивидуальный отчет
Не уверен, что означает «RptLabels», но длинное число, которое следует за ним, это GUID таблицы. Каждый раз, когда отчет печатается, для этого конкретного экземпляра назначается уникальный идентификатор GUID. Я предполагаю, что когда распечатывается отчет, он извлекает данные из определения данных, а снимок данных присваивается идентификатором GUID. Поэтому, по сути, это относится к меткам отчета (RptLabels) в экземпляре пакета slip, который я создал, когда я нажал кнопку печати. Это только моя догадка.
Я уверен, что формы отчетов имеют ограничение на количество столбцов, которые они могут показать, для которых установлено значение 1024, поэтому, возможно, в какой-либо таблице данных появляется слишком много столбцов, когда мы пытаемся создать форму упаковки с несколькими позициями.
Я оставляю остальную часть трассировки стека внизу этого сообщения, если вы волшебник Epicor / SSRS / SQL, который может читать этот материал. Фотографии также содержат данные о данных отчета.
Stack Trace: at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action 1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout, Boolean asyncWrite) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at Ice.Core.RptBase.RptLabelsSqlTableBuilder.BuildView(SqlObjectsCreated sqlObjectsCreated) in c:\_Releases\ICE\3.1.400.0\source\Server\Internal\Lib\TaskLib\RptBase\RptLabelsSqlTableBuilder.cs:line 100 at Ice.Core.RptBase.ReportDatabaseBuilder 1.BuildSchemaAndWriteData(Func 2 executeCommand, SqlObjectsCreated sqlObjectsCreated) in c:\_Releases\ICE\3.1.400.0\source\Server\Internal\Lib\TaskLib\RptBase\ReportDatabaseBuilder.cs:line 165 at Ice.Core.RptBase.ReportDatabaseBuilder`1.GenerateSqlObjectsAndProcessReport(SqlConnection connection) in c:\_Releases\ICE\3.1.400.0\source\Server\Internal\Lib\TaskLib\RptBase\ReportDatabaseBuilder.cs:line 191 at Ice.Core.RptBase.ReportDatabaseBuilder`1.XMLClose() in c:\_Releases\ICE\3.1.400.0\source\Server\Internal\Lib\TaskLib\RptBase\ReportDatabaseBuilder.cs:line 132 at Ice.Core.RptTaskBase`1.XMLClose() in c:\_Releases\ICE\3.1.400.0\source\Server\Internal\Lib\TaskLib\RptBase\RptTaskBase.cs:line 134 at Erp.Internal.SR.PackingSlipPrint.RunProcess(Int64 Instance_TaskNum, String OutputFile) in c:\_Releases\ERP\RL10.1.400.0\Source\Server\Internal\SR\PackingSlipPrint\PackingSlipPrint.cs:line 919 at Ice.Hosting.TaskCaller.InnerExecuteTask(IceDataContext newContext) in c:\_Releases\ICE\3.1.400.7\source\Framework\Epicor.Ice\Hosting\TaskCaller\TaskCaller.cs:line 78 at Ice.Hosting.TaskCaller.ExecuteTask(Boolean suppressTransaction) in c:\_Releases\ICE\3.1.400.7\source\Framework\Epicor.Ice\Hosting\TaskCaller\TaskCaller.cs:line 31 at Ice.Lib.RunTask.BpmFriendlyTaskLauncher.Run(String sessionIdPrefix, IceContext db, Action taskRunner) in c:\_Releases\ICE\3.1.400.7\source\Server\Services\Lib\RunTask\BpmFriendlyTaskLauncher.cs:line 63 at Ice.Services.Lib.RunTaskSvc.InnerRunTask(Int64 ipTaskNum, Boolean suppressTransaction) in c:\_Releases\ICE\3.1.400.7\source\Server\Services\Lib\RunTask\RunTask.cs:line 477 at Ice.Services.Lib.RunTaskSvc.InnerRunTask(Int64 ipTaskNum, Boolean suppressTransaction) in c:\_Releases\ICE\3.1.400.7\source\Server\Services\Lib\RunTask\RunTask.cs:line 477 at Ice.Services.Lib.RunTaskSvcFacade.RunTask(Int64 ipTaskNum) in c:\_Releases\ICE\3.1.400.7\source\Server\Services\Lib\RunTask\RunTaskSvcFacade.cs:line 97 at SyncInvokeRunTask(Object , Object[] , Object[] ) at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs) at Epicor.Hosting.OperationBoundInvoker.InnerInvoke(Object instance, Func`2 func) in c:\_Releases\ICE\3.1.400.7\source\Framework\Epicor.System\Hosting\OperationBoundInvoker.cs:line 59 at Epicor.Hosting.OperationBoundInvoker.Invoke(Object instance, Func`2 func) in c:\_Releases\ICE\3.1.400.7\source\Framework\Epicor.System\Hosting\OperationBoundInvoker.cs:line 28 at Epicor.Hosting.Wcf.EpiOperationInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs) in c:\_Releases\ICE\3.1.400.7\source\Framework\Epicor.System\Hosting\Wcf\EpiOperationInvoker.cs:line 23 at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc) at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet) at System.ServiceModel.Dispatcher.ChannelHandler.DispatchAndReleasePump(RequestContext request, Boolean cleanThread, OperationContext currentOperationContext) at System.ServiceModel.Dispatcher.ChannelHandler.HandleRequest(RequestContext request, OperationContext currentOperationContext) at System.ServiceModel.Dispatcher.ChannelHandler.AsyncMessagePump(IAsyncResult result) at System.ServiceModel.Dispatcher.ChannelHandler.OnAsyncReceiveComplete(IAsyncResult result) at System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result) at System.Runtime.AsyncResult.Complete(Boolean completedSynchronously) at System.ServiceModel.Channels.SecurityChannelListener`1.ReceiveItemAndVerifySecurityAsyncResult`2.InnerTryReceiveCompletedCallback(IAsyncResult result) at System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result) at System.Runtime.AsyncResult.Complete(Boolean completedSynchronously) at System.ServiceModel.Channels.TransportDuplexSessionChannel.TryReceiveAsyncResult.OnReceive(IAsyncResult result) at System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result) at System.Runtime.AsyncResult.Complete(Boolean completedSynchronously) at System.ServiceModel.Channels.SynchronizedMessageSource.ReceiveAsyncResult.OnReceiveComplete(Object state) at System.ServiceModel.Channels.SessionConnectionReader.OnAsyncReadComplete(Object state) at System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result) at System.Net.LazyAsyncResult.Complete(IntPtr userToken) at System.Net.LazyAsyncResult.ProtectedInvokeCallback(Object result, IntPtr userToken) at System.Net.Security.NegotiateStream.ProcessFrameBody(Int32 readBytes, Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.NegotiateStream.ReadCallback(AsyncProtocolRequest asyncRequest) at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) at System.Runtime.AsyncResult.Complete(Boolean completedSynchronously) at System.ServiceModel.Channels.ConnectionStream.IOAsyncResult.OnAsyncIOComplete(Object state) at System.Net.Sockets.SocketAsyncEventArgs.OnCompleted(SocketAsyncEventArgs e) at System.Net.Sockets.SocketAsyncEventArgs.FinishOperationSuccess(SocketError socketError, Int32 bytesTransferred, SocketFlags flags) at System.Net.Sockets.SocketAsyncEventArgs.CompletionPortCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped) at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP)
[Исключения таблицы заказа RDD] [1]
- Определение отчета SSRS новее, чем сервер
- Отображение HTML-контента в отчете SSRS
- SQL find Клиенты, с которыми не удалось связаться за последние 45 дней
- Отчеты SSRS - множественные выборки Определение нескольких запросов
- # Ужасно даже после использования IIF, чтобы избежать деления на нуль в выражении
- Как добавить параметры для нескольких агентов для исключения из отчета статистики SSRS
- Результат SSRS отличается от результата SSMS тем же запросом
- Как показать промежуточное и общее количество групп в ssrs
По-видимому, у вас может быть слишком много меток столбцов в вашем настроенном отчете. Каждый столбец имеет необязательную метку (Prompt / Heading), а Epicor создает представление со всеми этими метками в нем для использования в отчете. Стандартный пакет Slip в E10.0 содержит 904 столбца, которые намного больше, чем фактически используются в отчете. Добавили ли они в отчет больше полей? По общему признанию, дополнительные 120 столбцов много, если дополнительные таблицы не были добавлены.
Вы можете проверить количество столбцов в базе данных EpicorSSRS в SQL, используя данные обозревателя объектов и отсортировать представления по дате / времени создания, чтобы найти созданное вами временное представление (после запуска отчета). Запустите этот запрос в базе данных EpicorSSRS, чтобы подсчитать количество столбцов:
select count(*),c.table_name from information_schema.COLUMNS c JOIN information_schema.tables t ON c.TABLE_NAME = t.TABLE_NAME AND c.TABLE_Schema = t.TABLE_Schema WHERE TABLE_TYPE = 'view' and t.Table_name = 'RptLabels_710812BD643A4097900608B397D0779A' GROUP BY c.table_name
Очевидно, что если он не работает, представление не будет создано, но попробуйте снять флажки с неиспользованными метками в RDD, пока не дойдете до точки, в которой он будет работать.
Я не знаю, почему наличие нескольких строк на вашем слайде пакета увеличит количество полей. Ваше общее понимание того, как работает отчет, является правильным.
Вот краткое изложение в Sparce Columns SQL Server. Уверен, что проблема COLUMN_SET FOR ALL_SPARSE_COLUMNS
тем, что таблица не определяет COLUMN_SET FOR ALL_SPARSE_COLUMNS
. См. Эту статью Pinal Dave для более подробной информации.