共用方式為


暫存資料庫

MicrosoftSQL Server Compact 3.5 會建立用於存放暫存資料的暫存資料庫,例如︰

  • 在查詢期間建立的暫時結果集。

  • 執行 ORDER BY、GROUP BY、或 DISTINCT 子句時建立的暫時排序資料表。

暫存資料庫只有在明確指定建立的情況下,才會建立。當引擎啟動時,必須指定其名稱。暫存資料庫會在 Database Engine 關閉時移除。SQL Server Compact 3.5 應用程式的不正常終止,或有檔案同步處理問題時,會在系統中留下暫存資料庫檔案。這些檔案必須手動移除。

暫存資料庫的位置

對於需要大型暫存資料庫的作業,必須明確指定建立暫存資料庫的位置。如果未指定暫存資料庫位置,則目前的資料庫位置會被用做為暫存資料庫的位置。您不必指定暫存資料庫的名稱,檔案名稱會以 "SQLCE" 開頭,例如︰SQLCE334241234.tmp。

暫存資料庫的位置必須在 Database Engine 啟動前指定,且不能在引擎執行期間變更。壓縮資料庫時,您可以變更暫存資料庫的位置。如需詳細資訊,請參閱<維護資料庫>和<如何:壓縮資料庫 (以程式設計的方式)>。

指定位置

您可以使用 temp path、temp file directory 或 ssce:temp file directory 參數,在連接到資料庫的連接字串中指定暫存資料庫的位置。

注意

指定的暫存資料庫位置必須是已經存在。

如需詳細資訊,請參閱<如何:使用 ADO.NET 指定暫存資料庫的位置 (以程式設計的方式)>、<如何:使用複寫及 RDA 物件來指定暫存資料庫的位置>和<如何:使用 OLE DB 指定暫存資料庫的位置 (以程式設計的方式)>。

您可以搭配 SqlCeConnectionSqlCeReplicationSqlCeRemoteDataAccess 物件使用連接字串。對於 SqlCeReplication 物件,您必須包含所有使用 SubscriberConnectionString 屬性之方法的暫存資料庫位置。下表列出這些方法。

僅限原生

僅限 Managed

包括原生和 Managed

  • repl.Initialize

  • repl.run

  • repl.Synchronize

  • repl.BeginSynchronize

  • repl.Addsubscription

  • repl.ReinitializeSubscription

  • repl.DropSubscription

對於 SqlCeRemoteDataAccess 物件,您必須包含所有使用 LocalConnectionString 屬性之方法的暫存資料庫位置。這些方法是︰

  • RDA_Object.Pull (原生和 Managed)

  • RDA_Object.Push (原生和 Managed)

暫存資料庫的增長

大型資料庫可能在一般執行期間,產生大量的暫存資料。當暫存資料庫增長到預設儲存裝置上沒有足夠的儲存空間,或達到最大暫存資料庫限制時,應用程式會失敗。

下列作業可能會造成暫存資料庫的增長,特別是當一組作業包裝在單一的明確交易中時︰

  • 影響許多資料的 UPDATE 和 DELETE 陳述式。

  • 排序作業。如果有滿足排序的索引,則排序可能不需要使用暫存資料庫。某些排序作業可能會建立一些額外的暫存檔案,做為暫存排序緩衝區。這些檔案與暫存資料庫不同。每一個資料庫會有一個暫存資料庫,但暫時排序緩衝區檔案數量則不一定。

如需明確交易的詳細資訊,請參閱<交易種類>。

若要防止大型資料庫檔案增長到超過裝置的存放限制,請將資料庫儲存到儲存卡中,而不是內部 RAM。