1

Hallo allerseits, dies könnte eine Aufnahme im Dunkeln sein, aber ich suche nach Hilfe zum Aussortieren eines Fehlers, der entweder in einer Berichtsdatendefinition liegt oder das Berichtsformular für Sequel Server Reporting Services (SSRS). Der Fehler verhindert, dass ein bestimmtes Formular (kundenspezifischer Lieferschein) gedruckt wird, wenn mehrere Zeilen vorhanden sind. Nur zur Kenntnisnahme, das Berichtsformular wurde mit Microsoft Report Builder erstellt und ruft Daten von Epicor ab, die mit einer "Berichtsdatendefinition" verknüpft sind. Der Berater, der den Packzettel angepasst hat, ist nicht mehr erreichbar, und ohne seine Notizen versuche ich herauszufinden, was an der ursprünglichen Datendefinition oder dem Berichtsformular, die dies verursacht haben könnte, geändert wurde Error.Epicor 10 (ERP) SSRS Reporting Fehler: Maximum von 1024 zurückgegebenen Spalten

Okay, jetzt auf das Problem:

Beim Versuch, einen mehrzeilige Element Packzettel zu drucken, erhalten wir diesen Fehler:

Programm Ice.Services.Lib.RunTask eine unerwartete Ausnahme ausgelöst mit die folgende Meldung:

runTask: CREATE vIEW ist fehlgeschlagen, weil die Spalte 'OTSCity' im Blick 'RptLabels_8B03042B0E8248588E5DECCC9D76BB89' das Maximum von 1024 Spalten überschreitet.

Einige Informationen, die ich während meiner Jagd und Picken gesammelt haben:

OTSCITY ist ein Feld in der Tabelle OrderHED (Auftragskopf). Die OrderHed-Tabelle ist eine der (25) Berichtstabellen in der Datendefinition, sieht jedoch nicht so aus, als wäre sie mit einer anderen Tabelle verknüpft, und das Feld 'OTSCITY' ist sowohl im Original als auch in der Spalte ausgeschlossen benutzerdefinierter Bericht

Nicht sicher, was "RptLabels" bezieht, aber die lange Zahl, die folgt, ist die Tabellen-GUID. Jedes Mal, wenn ein Bericht gedruckt wird, wird dieser bestimmten Instanz eine eindeutige GUID zugewiesen. Ich schätze, wenn ein Bericht gedruckt wird, zieht er die Daten aus der Datendefinition und dieser Snapshot der Daten wird mit der GUID zugewiesen. Es bezieht sich also im Wesentlichen auf die Bericht-Etiketten (RptLabels) in der Packzettel-Instanz, die ich beim Drücken der Drucktaste erstellt habe. Das ist nur meine Vermutung.

Ich bin ziemlich sicher, dass die Berichtsformulare eine Begrenzung haben, wie viele Spalten sie anzeigen können, die auf 1024 gesetzt ist, also möglicherweise einige Datentabelle zu viele Spalten zurückgibt, wenn wir versuchen, ein Packzettel mit mehreren zu machen Werbebuchungen.

Ich verlasse den Rest des Stack-Trace am Ende dieses Beitrags für den Fall, dass Sie ein Epicor/SSRS/SQL-Wizard sind, der dieses Zeug lesen kann. Bilder der Report-Datendefinition sind ebenfalls vorhanden.

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 OrderHed Tabelle Ausschlüsse] [1]

+0

Es klingt, als ob dieser Bericht "Sparse Columns" verwendet. –

Antwort

1

Es scheint, dass Sie möglicherweise zu viele Spaltenbeschriftungen in Ihrem benutzerdefinierten Bericht haben. Jede Spalte hat ein optionales Label (Prompt/Heading) und Epicor erstellt eine Ansicht mit allen diesen Labels zur Verwendung im Bericht. Der Standard-Packzettel in E10.0 enthält 904 Spalten, was weit mehr ist, als tatsächlich auf dem Bericht verwendet werden. Haben sie dem Bericht viel mehr Felder hinzugefügt? Zugegeben, eine zusätzliche 120 Spalten ist viel, wenn keine zusätzlichen Tabellen hinzugefügt wurden.

Sie können die Anzahl der Spalten in der EpicorSSRS-Datenbank in SQL überprüfen, indem Sie die Objekt-Explorer-Details verwenden und die Ansichten nach Erstellungsdatum/-zeit sortieren, um die soeben erstellte temporäre Ansicht zu finden (nach dem Ausführen des Berichts). Führen Sie diese Abfrage in der Datenbank EpicorSSRS die Anzahl der Spalten zu zählen:

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 

Natürlich, wenn es ausfällt, dann wird die Ansicht nicht erstellt werden, sondern versuchen, einige der nicht verwendeten Etiketten in der RDD unchecking, bis Sie bis zu einem Punkt, wo es laufen wird.

Ich weiß nicht, warum mehrere Zeilen auf Ihrem Packzettel die Anzahl der Felder erhöhen würde. Ihr allgemeines Verständnis davon, wie die Berichterstattung funktioniert, ist korrekt.

+0

Hey, danke für die ausführliche Info! Ich habe den Fehler behoben, indem ich meine eigene RDD erstellt habe ... obwohl ich nicht weiß, was das verursacht hat. Als ich mich an die Epicor-Unterstützung wandte, sagten sie: "Versuche, mindestens 40 Spalten auszuschließen", aber ich war mir nicht sicher, welche Spalten für den Bericht unnötig waren. Ich wünschte, ich hätte StackOverflow gestern überprüft! Ich hatte exportiert, um jede Tabellen "Ausschluss" -Liste von Feldern, für Original und benutzerdefiniert zu übertreffen, und festgestellt, dass es weniger enthalten Spalten in der benutzerdefinierten als das Original. Es gab auch eine Menge Unterschiede zwischen dem Original und den benutzerdefinierten, wenn es um das Einschließen/Ausschließen von Feldern ging :(. –

1

Hier ist ein Überblick über SQL Server Sparce Columns. Ich wette, das Problem, das Sie haben, ist, weil die Tabelle kein COLUMN_SET FOR ALL_SPARSE_COLUMNS definiert. Weitere Informationen finden Sie unter this Artikel von Pinal Dave.