交易隔離等級
MicrosoftSQL Server Compact 4.0 預設會以「讀取認可」的隔離等級運作。然而,應用程式可能需要以不同的隔離等級作業。若要在應用程式中實作不同的隔離等級,您可以使用 SET TRANSACTION ISOLATION LEVEL 陳述式設定工作階段的隔離等級,自訂整個工作階段的鎖定。
重要
雖然 SQL Server Compact 4.0 的預設隔離等級是「讀取認可」,在讀取資料時,使用此隔離等級不會導致 S 鎖定。此行為與 MicrosoftSQL Server 不同。在 SQL Server 中,當使用「讀取認可」時,無論何時讀取資料列,都會要求 S 鎖定,如果該資料列有衝突鎖定,就會等候。SQL Server Compact 4.0 不要求 S 鎖定,因為資料頁版本會自動維護,以確保可以讀取認可的資料,而不需要鎖定。這非常重要,因為在 SQL Server Compact 4.0 中,SELECT 作業不需要對資料使用任何鎖定,且幾乎一定會成功。SELECT 作業在某些資料有 X 鎖定時不會等候,這與 SQL Server 相反。SELECT 作業仍會要求 Sch-S 鎖定。作業只有在資料表被修改時會失敗,因為有衝突的 Sch-X 鎖定。
在指定隔離等級時,SQL Server Compact 4.0 工作階段中所有 SELECT 陳述式的鎖定行為會以該隔離等級作業,並持續到工作階段終止,或直到隔離等級設定為其他等級為止。例如,若要將交易隔離等級設定為「可序列化」,並確保沒有同時發生的交易會插入虛設項目資料列到 Employee 資料表,請使用下列 SQL 陳述式︰
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
BEGIN TRANSACTION;
SELECT EmployeeID FROM Employee;
您也可以程式設計的方式設定交易隔離等級。下列是如何使用 ADO .NET 設定交易隔離等級的範例︰
SqlTransaction myTrans;
myTrans = myConnection.BeginTransaction(IsolationLevel.RepeatableRead);