Epicor 10 (ERP) Ошибка отчетности SSRS: максимум 1024 столбца возвращены

Привет всем, это может быть выстрел в темноте, но я ищу помощь по сортировке ошибки, которая находится в определении отчета или в отчете отчета о службах отчетов Sequel Server Reporting Services (SSRS). Эта ошибка препятствует печати определенной формы (персонализированной упаковки) при наличии нескольких строк. Просто отметим, что форма отчета разработана с использованием Microsoft Report Builder и получает данные от Epicor, у которого есть связанное «Определение данных отчета». Консультант, настроивший упаковочный листок, больше не доступен, и без его заметок я пытаюсь понять, что [здесь] [1] было изменено исходное определение данных или форма отчета, которые могли бы вызвать эту ошибку ,

Хорошо, теперь проблема:

При попытке распечатать сальдо упаковки нескольких позиций мы получим эту ошибку:

Программа 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]

По-видимому, у вас может быть слишком много меток столбцов в вашем настроенном отчете. Каждый столбец имеет необязательную метку (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 для более подробной информации.

  • Несколько гипер-ссылок в одной ячейке в отчете SSRS
  • Выражение для удаления возврата каретки в SSRS
  • Преобразовать MonthName в месяц Номер SSRS
  • Форматирование ячеек матрицы SSRS
  • Отправить отчет SSRS по электронной почте
  • Рассчитанная серия SSRS вместе с регулярной серией
  • Как перемещать столбцы деталей между родительскими группами в SSRS
  • Обновить общий путь к источнику данных всех отчетов SSRS для разных путей
  • Отчет SQL Server Reporting Studio с сообщением «ERROR #» или недопустимой ошибкой типа данных
  • Как я могу заставить мои источники данных SSRS / наборы данных работать параллельно?
  • SQL Выберите только месяц из формата YYYYMMDD int
  • Interesting Posts

    SQL Преобразование числа в слово

    Удалите несколько строк с помощью инструкции sql «delete from tableName», тогда как TRIGGER «After Delete» применил это

    Как найти код с определенной строкой, но не в комментариях

    Вставка триггера не работает со вставкой. Выберите из инструкции

    Проверить использование ограничений

    удаление дубликатов из таблицы без использования временной таблицы

    Объект SQL SSRS был отключен или не существует на сервере

    Как сравнить все значения столбцов на основе раздела с идентификатором

    Перенос базы данных Parse.com на SQL Server

    SQL Server – попытка де-нормализовать таблицу

    Объединение нескольких SQL-запросов в 1

    Удаленное подключение к SQL Server DB из приложения WPF

    Рекомендации по использованию нескольких табличных соединений

    Как проверить, есть ли несколько значений одного и того же атрибута в одном и том же объекте, SQL Server

    Используйте 'ISNULL (x, 0) = 0' вместо (x равно null OR x = 0)

    Давайте будем гением компьютера.