sql-server - DBX将SQL错误截断为256个字符

标签 sql-server delphi error-handling datasnap truncated

我正在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/

相关文章:

mysql - SQL Server 相当于 MySQL 中的 DECLARE CONTINUE HANDLER?

sql - 如何获取新插入或已经存在的记录的标识值?

sql - CONTAINS 与条件逻辑组合时的效率问题

delphi - 如何使用 DSPack 和 Delphi 5 从网络摄像头捕获并保存到文件

Delphi - TObjectDictionary 在免费时给出无效指针

asp.net - 在网站上记录错误的最佳方法

c# - ASP.NET MVC 自定义错误处理 Application_Error Global.asax?

sql-server - SQL Server 上的 WSDL 给出 HTTP 状态 505 版本不受支持

delphi - 如何将 DRY 应用于涉及 Form 组件的接口(interface)实现?

php - 如何处理Codeigniter中的4xx和5xx错误?