1

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_GetErrorMessageLengthTDBXCommon_GetErrorMessageLength型で、次のように定義されています。

TDBXCommon_GetErrorMessageLength = function(Handle: TDBXCommonHandle; LastErrorCode: TDBXErrorCode; out ErrorLen: TInt32): TDBXErrorCode; stdcall;

より多くのデータベース エラー (512 文字など) をクライアントに送信できるようにバッファ サイズを増やす方法はありますか? それとも、これは DBX フレームワークの単なる制限ですか?

4

1 に答える 1

1

@Sertacは、Carlosがエラーメッセージを切り捨てるドライバーで発生した非常によく似た問題を発見しました。Carlosは、midas.dllを変更してエラーバッファサイズを増やすと、問題が解決したことを発見しました。解決策は私の問題でも同じだと確信しています。

カルロスの質問へのリンクを提供してくれた@Sertacに感謝します。

エラーの調整:切り捨てられたエラーメッセージで問題が発生した人はいますか?

于 2012-04-30T15:48:57.377 に答える