は、ここで、このようなコードを使用してクエリを実行する想像:Read Uncommittedクエリの後、Committedに戻す必要がありますか?
using (SqlConnection TheConnection = GetSqlConnectionNoCatch(SQLConnectionStr))
using (SqlDataAdapter TheDataAdapter = new SqlDataAdapter(SQLStatement, TheConnection) { MissingSchemaAction = SchemaAction })
{
DataSet TheDataSet = new DataSet();
TheDataAdapter.SelectCommand.CommandTimeout = SQLTimeout;
TheDataAdapter.Fill(TheDataSet, TableName);
return TheDataSet;
}
とデッドロックと失敗の多くにつながる、絶対に書き込むと、砲撃、ノンストップを取得しているデータベーステーブルを読み取ることを想像しますRead Uncommitted Isolationレベルを使用してその読み取りを実行する必要があります。
私の通常のクエリであった場合:
SELECT Field1, Field2 FROM Table WHERE some_type_of_clause
私は頻繁にあなたにそれを変更することを参照してくださいので、ここでは、この特定のリンクをこの質問をするために私を導いたものだ、
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SELECT Field1, Field2 FROM Table WHERE some_type_of_clause
彼の例では、次があります。
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SELECT *
FROM AdventureWorks.Sales.SalesOrderDetail sod
INNER JOIN AdventureWorks.Sales.SalesOrderHeader soh ON
sod.SalesOrderID = soh.SalesOrderID
ORDER BY sod.ModifiedDate
-- Set isolation level to original isolation level
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
クエリ終了時にREAD COMMITTEDに戻す必要がありますか?あるいは、私の読んだことは、その1つの質問に対してのみコミットされていますか?または、接続の寿命(Connectionがすぐに終了するように、DataSetを返すとすぐに自分のコードを調べることができます)
ウェブ上のほとんどの例は、「元の分離レベルに戻す」ということを除外しています。ありがとう!
緑色のチェックマークとアップコートをお返事ありがとうございました! – JustLooking