アプリのコメント欄の最大サイズを変更したいという要望がありました。以前はvarchar(500)に設定していたので、ドキュメントを読んだ後、フィールドのデータ型をvarchar(500)からvarchar(max)に変更することにしました。データベースは問題なく変更を受け入れました (データベース管理に Microsoft SQL Server Management Studio 2005 および Microsoft SQL Server Management Studio 2008 を使用)。それから私はソフトウェアを変更し続けました。ソフトウェアは、データベースと通信するためのRemObjectsを使用してDelphiで記述されています。そこで、サーバーのTDASchemaを変更し、新しいvarchar(max)フィールドをString(65536)としてマップしましたデータ型 (このような明示的な静的サイズについて少し心配しましたが、続けました)。次に、TDAMemDataTableオブジェクトのDataTable スキーマを取得し、すべてのフィールドを更新しました。
アプリケーションを起動し、データベースがこの特定の変更されたフィールドの変更を受け入れるかどうかを確認することにしました。レコードの 1 つを編集し、ボタンをクリックしてDataSetをサーバーと同期すると、次のような失敗メッセージが表示されました。
データ型 varchar(max) と text は equal to 演算子で互換性がありません
サーバー オブジェクト (データベース フィールドを RemObjects オブジェクトにマップするオブジェクト) がフィールド データ型を RemObjects の間違ったデータ型にマップしたと解釈します。
これはどのように解決できますか?代替手段は何ですか?
PS このリリースでは、RemObjects から .1267 ログを作成すると、次のことが明確に示されます。
修正: DataSnap: MSSQL 2005 VARCHAR(MAX) への更新のポストに失敗する
ビルド バージョン .1067 を使用しています。アップデートで問題が解決するかどうか
PPS RemObjects の最新バージョンに更新した後も、問題は解決しません。