次の方法で共有


データベースのロック動作を制御する

重要

このコンテンツはアーカイブされており、更新されていません。 最新のドキュメントについては、「Dynamics 365 Business Central の新機能と予定されている機能」を参照してください。 最新のリリース計画については、「Dynamics 365、Power Platform、Cloud for Industry のリリース計画」を参照してください。

有効対象 パブリック プレビュー 一般提供
管理者、作成者、マーケティング担当者、またはアナリスト向けで、自動的に有効化される 2023年3月1日 2023年4月1日

ビジネス バリュー

データベースのロックは、パフォーマンスの問題の主要な根本原因の 1 つです。 AL コードで発生するロックが少なければ、ユーザーのシステムのパフォーマンスが向上します。

機能の詳細

既定では、データベースのクエリ時に使用される分離レベルは、Business Central のランタイムによって自動的に決定されます。 AL 開発者は、レコード インスタンスの個々の読み取りごとに、データベースの分離レベルを明示的に制御できるようになりました。

レコード データ型に新しい ReadIsolation メソッドが導入されました。 メソッドの構文は次のとおりです。

rec.ReadIsolation := IsolationLevel::<enum value>

このメソッドは、プロパティ アクセス構文を使用して呼び出すこともできます。

可能な IsolationLevel 値を、次の表に示します。

説明
Default 読み取りのテーブルの分離レベルに従います。IsolationLevel を設定しない場合と同じ動作です。
ReadCommitted コミット済みデータの読み取りのみを許可します。他のトランザクションによって変更されたがまだコミットされていないデータを読み取ることはできません。
ReadUncommitted レコードは、他のトランザクションによって変更されたがまだコミットされていないデータを読み取ることができます (ダーティ リードとも呼ばれます)。 ReadUncommitted トランザクションはロックを取得せず、他のトランザクションからのロックを無視します。
RepeatableRead 現在のトランザクションの存続期間中、読み取りの安定性を確保します。 現在のトランザクションが完了するまで、レコードは、他のトランザクションによって変更されたがまだコミットされていないデータを読み取ることはできません。また、他のトランザクションは、現在のトランザクションによって読み取られたデータを変更することはできません。
UpdLock 現在のトランザクションの存続期間中、読み取りの一貫性を確保します。 現在のトランザクションが完了するまで、レコードは、他のトランザクションによって変更されたがまだコミットされていないデータを読み取ることができません。また、同じ分離レベルの他のトランザクションは、レコードによって読み取られたデータを読み取ることができません。

関連項目

インスタンスの分離レベルを記録する (ドキュメント)