Firebirdドライバを使用してDelphiのDBXでカスタムトランザクションレベルを指定する方法を探しています。私はDelphi XEを使用しています。Delphi DBX Firebirdのカスタムトランザクションレベル
TSQLConnectionコンポーネントのパラメータエディタでは、さまざまなTransIsolation値を設定でき、デフォルト値はReadCommited
です。プロパティWaitOnLocks
はTrue
に設定されています。 は、私は、これは、次のFirebirdのトランザクション構成を使用していますが、私はよく分からない期待:
READ WRITE + WAIT + SNAPSHOT
(http://www.firebirdsql.org/refdocs/langrefupd20-set-trans.htmlを参照)
私はLOCK TIMEOUT [seconds]
の代わりWAIT
を使用したいと思います。しかし、私はどのようにこれを指定するのか見つけることはできません。私はDBXソースファイルを見てきましたが、カスタムトランザクションレベル(xilCUSTOM
の検索)のコードがありますが、未完/未使用のようです。
この理由は、マルチユーザデータスナップアプリケーションでデッドロックが発生することがあり、あるトランザクションが別の(おそらくはデッド)トランザクションを待っているためです。クライアントのハングアップを無期限に行うよりも、数秒後にトランザクションを中断させる方がいいでしょう。
ドキュメントに続く 'さらに、TSQLConnectionでは、データベース固有のカスタム分離レベルを指定できます。カスタム分離レベルは、dbExpressドライバによって定義されます。詳細についてはドライバのドキュメントを参照してください。 – JustMe
文書化されたインターベースドライバを購入することを検討していますか? IBDACやIB Object(+パフォーマンス+互換性+サポート)のようなより自然な敬礼を使用しますか? – JustMe