Windows Server 2008 R2 で Delphi-XE2 Enterprise、SQLServer 2008 R2 を使用しています。SQL エラーが発生すると、DataSnap サーバーはそれをキャプチャし、クライアント アプリケーションに返します。256 文字に切り捨てられたエラー メッセージを除いて、これはすべて機能します。
[file:Data.DBXDynalink]TDBXMethodTable.RaiseError()
エラーが発生したときの DataSnap サーバーのスタック トラックは、メソッドを使用して DBX フレームワークを介して 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 フレームワークの単なる制限ですか?