4

MS SQL Serverで、ストアドプロシージャで「SETTRANSACTION ISOLATION LEVEL」を使用する場合、selectステートメントをBEGIN / END TRANSACTIONブロックでラップする必要がありますか?以下は期待通りに動作しますか?

CREATE PROCEDURE my_sproc AS
BEGIN

    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

    SELECT * FROM MyTable

END
4

2 に答える 2

4

TRANSACTION ISOLATION LEVEL設定は接続レベルの設定です。トランザクションでラップする必要はありません。

そうは言っても、この設定からダーティリードなどが発生することを理解していますか?

次のようなロックヒントを使用すると、クエリごとに同じことを実行できます。

SELECT * FROM MyTable WITH (NOLOCK)

于 2010-12-10T15:17:45.747 に答える
1

SET TRANSACTIONISOLATIONLEVELはBEGIN/COMMIT/ROLLBACKとは異なります

  • 1つ目は、分離と同時実行の設定を変更します
  • 2つ目は、アトミックな「作業単位」を定義します

直接的なリンクや相互作用はありません:異なる概念

于 2010-12-10T15:18:17.817 に答える