我正在Windows Server 2008 R2上使用Delphi-XE2 Enterprise,SQLServer 2008 R2。出现SQL错误时,DataSnap服务器将捕获该错误并将其返回给客户端应用程序。除了将错误消息截断为256个字符外,所有其他方法均有效。
发生错误时,DataSnap服务器的堆栈跟踪显示使用[file:Data.DBXDynalink]TDBXMethodTable.RaiseError()
方法通过DBX Framework检索SQL DB错误时,SQL错误消息被截断。即使错误消息更长,来自 RaiseError()方法的以下代码也会将 MessageLength 设置为256。因此,返回给客户端的错误消息永远不会超过256个字符。
Status := FDBXBase_GetErrorMessageLength(DBXHandle, DBXResult, MessageLength);
FDBXBase_GetErrorMessageLength 类型为 TDBXCommon_GetErrorMessageLength ,定义为:
TDBXCommon_GetErrorMessageLength = function(Handle: TDBXCommonHandle; LastErrorCode: TDBXErrorCode; out ErrorLen: TInt32): TDBXErrorCode; stdcall;
是否有增加缓冲区大小的方法以允许更多数据库错误发送到客户端(例如512个字符),或者这仅仅是DBX Framework的限制?
最佳答案
@Sertac发现了与Carlos截断错误消息的驱动程序类似的问题。卡洛斯发现更改midas.dll以增加错误buffersize可以解决他的问题。我确定解决方案与我的问题相同。
感谢@Sertac提供了指向Carlos问题的链接:
Reconcile Error: Has anyone had problems with truncated error messages?
关于sql-server - DBX将SQL错误截断为256个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10356792/