多使用者存取及 RDA
Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) 隨時允許多位使用者進行存取,包括遠端資料存取 (RDA)。當提取或發送動作正在進行時,另一位使用者可存取相同的 SQL Server Compact Edition 資料庫。
由於提取作業要求在提取時不能有特定本機資料表存在,而且資料表是在從伺服器提取資料的過程中建立,因此提取的資料表必須等到提取作業完成後才能存取。當資料發送到伺服器時,如果資料變更是在發送開始後才發生,這些變更會在下次發送作業時傳送到伺服器。如果來自伺服器的資料在特定發送至伺服器的作業完成後必須重新整理,則必須等到發送及提取作業均完成後,應用程式才會允許資料表的其他變更,如此可確保這些變更不會在卸除資料表時遺失。
允許多個連接存取 SQL Server Compact Edition 資料庫,提供開發人員一個較簡單的開發模型。因為 SQL Server Compact Edition 資料庫引擎可以處理多個應用程式的要求,或是單一應用程式的多重連接要求,開發者不必排程資料庫存取。需要多重連接時,SQL Server Compact Edition 資料庫引擎會視需要為特定作業鎖定資料。
在同步處理期間變更主索引鍵
RDA 追蹤資料表是根據主索引鍵來追蹤更新、插入及刪除。由於可讓多位使用者存取主索引鍵資料行,因此務必不能在同步處理期間變更主索引鍵資料行的值。
警告 雖然很少會變更主索引鍵資料行內的值,但是如果在主索引鍵已變更的資料表進行同步處理時發生此情形,可能會導致錯誤以及資料遺失。
範例
在資料表 A 中,主索引鍵值從 1 變更為 2。值 1 已儲存在 RDA 所用的追蹤資料行內,因此發送作業發生時,SQL Server Compact Edition 知道在更新資料為新值時要用於搜尋條件的值為何。
應用程式初始化發送作業,並以 1 做為搜尋值,在上載到 SQL Server 資料庫的訊息中傳送新值 2。但是,如果新的資料值在同步處理期間變更,追蹤資料行不會將其搜尋值從 1 變更為 2,因為發送尚未完成。在發送成功後,下次發送此資料列一定會失敗。搜尋條件 1 不再有效,因為主索引鍵值已在伺服器上從 1 變更為 2。
如需多使用者存取的詳細資訊,請參閱<多使用者存取>。如需鎖定的詳細資訊,請參閱<鎖定 (SQL Server Compact Edition)>。