文書番号: 215520 - 最終更新日: 2003年8月21日 - リビジョン: 2.1

[INFO] COM+、MTS のトランザクション分離レベルの設定

この記事は、以前は次の ID で公開されていました: JP215520
すべて展開する | すべて折りたたむ

概要

トランザクション化された Microsoft Transaction Server (MTS) または COM+ 1.0 コンポーネントで開かれるデータベースの接続は、そのアクティビティの Microsoft 分散トランザクション コーディネータ (MS DTC) トランザクションに参加します。COM+ が MS DTC トランザクションの接続に参加すると、トランザクション分離レベルが Serializable に設定されますが、それは最も可能性が高い分離の設定です。デフォルトでは、MTS および COM+ を別のレベルに設定することはできません。

詳細

SQL Server 6.5、7.0、および 2000 を使用する場合、接続を開始後により低いトランザクション分離レベルに設定できます。これによってデータベースのロックが減少するので、スループットを向上し、データベースのブロッキング問題を軽減することができます。

しかし、トランザクション分離レベルを Serializable からより低いレベルに設定する前に、その影響を注意深く検討する必要があります。主な問題は、クエリが行われた後でデータが変更される可能性があるということです。たとえば、アプリケーションでクエリが返したデータを更新する場合、またはクエリが返したデータをトランザクション内での更新に影響するような使い方をする場合に、この問題が表面化します。したがって、分離レベルを Serializable のままにすることをお勧めします。その設定を Repeatable に下げることができる場合もあります。

1 つの論理的な例外は、読み取りのみを行うトランザクションです。この場合、より低いトランザクション レベルがデータベースの一貫性を損なうことなくスループットを向上します。

T-SQL コマンドを使用して、接続のレベルを下げる

SQL Server 6.5、7.0、および 2000 では、SET TRANSACTION ISOLATION LEVEL T-SQL コマンドを使用して、特定の接続に対する分離レベルを別の値に設定できます。トランザクション化されたコンポーネントの内外でいつでもこれを行うことができます。次の Microsoft Visual Basic ADO (ActiveX データ オブジェクト) コードを MTS コンポーネントで実行すると、デフォルトの Serializable トランザクション レベルが次のクエリで Read Committed に変更されます。
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset

cn.ConnectionString = "DSN=Pubs; PWD=sa"
cn.Open
cn.Execute "Set TRANSACTION ISOLATION LEVEL READ COMMITTED"

クエリ ヒントを使用して、クエリのレベルを下げる

クエリ ヒントを使用して、特定のクエリのトランザクション レベルを変更することもできます。次の Visual Basic ADO のコードは、特定のクエリのロック動作を Read Committed に変更します。
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset

cn.ConnectionString = "DSN=Pubs; PWD=sa"
cn.Open

rs.ActiveConnection = cn
rs.Open "select * from authors with (READCOMMITTED)"
分離レベルおよびロックの詳細については、SQL Server のマニュアルを参照してください。

: ADO Connection オブジェクトの IsolationLevel プロパティは、COM+ および MTS トランザクションには影響しません。

関連情報

詳細については、次の Microsoft Web サイトの『COM+ Application Guidelines for Visual Basic』の「Data Access」をご覧ください。
http://msdn.microsoft.com/library/techart/complus_data.htm (http://msdn.microsoft.com/library/techart/complus_data.htm)

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 215520? (http://support.microsoft.com/kb/215520/EN-US/ ) (最終更新日 2001-01-24) をもとに作成したものです。


この資料は以下の製品について記述したものです。
  • Microsoft Transaction Services 1.0
  • Microsoft Transaction Services 2.0
  • Microsoft COM+ 1.0
  • Microsoft SQL Server 6.5 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
キーワード:?
kbcomplus kbdatabase kbdtc kbinfo kbmts kbsqlserv2000 kbsqlserv650 kbsqlserv700 kbvbp KB215520
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"
 

サポート技術情報の翻訳

 

Related Support Centers