トランザクションとコンカレンシーTransactions and Concurrency

トランザクションは、単一のコマンド、またはパッケージとして実行されるコマンドのグループで構成されます。A transaction consists of a single command or a group of commands that execute as a package. トランザクションを使用することで、複数の操作を 1 つの作業単位にまとめることができます。Transactions allow you to combine multiple operations into a single unit of work. トランザクションのあるポイントで障害が発生した場合は、トランザクションが開始される前の状態にすべての更新をロールバックできます。If a failure occurs at one point in the transaction, all of the updates can be rolled back to their pre-transaction state.

データの一貫性を保証するために、トランザクションは ACID プロパティ (原始性、一貫性、分離性、および持続性) に準拠する必要があります。A transaction must conform to the ACID properties—atomicity, consistency, isolation, and durability—in order to guarantee data consistency. Microsoft SQL Server など、ほとんどのリレーショナル データベース システムでは、クライアント アプリケーションが更新、挿入、または削除の操作を行うたびに、ロック、ログ、およびトランザクション管理の機能を提供し、トランザクションをサポートします。Most relational database systems, such as Microsoft SQL Server, support transactions by providing locking, logging, and transaction management facilities whenever a client application performs an update, insert, or delete operation.

注意

複数のリソースがかかわるトランザクションで、ロックがあまりにも長く保持されると、コンカレンシー数が少なくなる場合があります。Transactions that involve multiple resources can lower concurrency if locks are held too long. そのため、トランザクションはできるだけ短くします。Therefore, keep transactions as short as possible.

トランザクションに、同じデータベースまたはサーバーの複数のテーブルが含まれている場合、一般的にストアド プロシージャ内の明示的トランザクションの方がパフォーマンスが向上します。If a transaction involves multiple tables in the same database or server, then explicit transactions in stored procedures often perform better. SQL Server のストアド プロシージャにトランザクションを作成するには、Transact-SQL ステートメントの BEGIN TRANSACTIONCOMMIT TRANSACTION、および ROLLBACK TRANSACTION を使用します。You can create transactions in SQL Server stored procedures by using the Transact-SQL BEGIN TRANSACTION, COMMIT TRANSACTION, and ROLLBACK TRANSACTION statements. 詳細については、SQL Server オンライン ブックを参照してください。For more information, see SQL Server Books Online.

SQL Server と Oracle 間のトランザクションなどの他のリソース マネージャーに関連するトランザクションでは、分散トランザクションが必要です。Transactions involving different resource managers, such as a transaction between SQL Server and Oracle, require a distributed transaction.

このセクションの内容In This Section

ローカル トランザクションLocal Transactions
データベースに対してトランザクションを実行する方法を示します。Demonstrates how to perform transactions against a database.

分散トランザクションDistributed Transactions
ADO.NET で分散トランザクションを実行する方法について説明します。Describes how to perform distributed transactions in ADO.NET.

SQL Server と System.Transactions の統合System.Transactions Integration with SQL Server
説明System.Transactions分散トランザクションを使用するための SQL Server と統合します。Describes System.Transactions integration with SQL Server for working with distributed transactions.

オプティミスティック コンカレンシーOptimistic Concurrency
オプティミスティック コンカレンシーとペシミスティック コンカレンシーについて、およびコンカレンシー違反をテストする方法について説明します。Describes optimistic and pessimistic concurrency, and how you can test for concurrency violations.

関連項目See also