一時データベース

Microsoft SQL Server Compact 3.5 では一時データベースが作成され、次のような一時データの格納に使用されます。

  • クエリの実行中に作成される中間結果セット

  • ORDER BY 句、GROUP BY 句、または DISTINCT 句の実行中に作成される並べ替えの中間テーブル

一時データベースが作成されるのは、その作成を明示的に指定した場合だけです。エンジンの起動時に名前を指定する必要があります。データベース エンジンを終了すると、一時データベースは削除されます。SQL Server Compact 3.5 アプリケーションが異常終了した場合、またはファイルの同期に問題が発生した場合は、一時データベース ファイルがシステムに残ったままになります。これらのファイルは、手動で削除する必要があります。

一時データベースの格納場所

サイズの大きい一時データベースを必要とする操作では、その作成場所を明示的に指定する必要があります。一時データベースの場所を指定しないと、現在のデータベースの場所が一時データベースの場所として使用されます。一時データベースの名前はユーザーが指定するのではなく、自動的に割り当てられます。このファイル名は、SQLCE334241234.tmp のように "SQLCE" で始まります。

一時データベースの場所は、エンジンの起動前に指定する必要があります。エンジンの実行中は変更できません。データベースの最適化時に、一時データベースの場所を変更できます。詳細については、「データベースの管理」および「データベースを最適化する方法 (プログラム)」を参照してください。

場所の指定

一時データベースの場所は、データベースへの接続文字列に、temp path、temp file directory、または ssce:temp file directory パラメータを使用して指定します。

注意

一時データベース用に指定する場所は、既に存在している必要があります。

詳細については、「ADO .NET を使用して一時データベースの場所を指定する方法 (プログラム)」、「Replication オブジェクトと RDA オブジェクトを使用して一時データベースの場所を指定する方法」、および「OLE DB を使用して一時データベースの場所を指定する方法 (プログラム)」を参照してください。

SqlCeConnection オブジェクト、SqlCeReplication オブジェクト、および SqlCeRemoteDataAccess オブジェクトで接続文字列を使用します。SqlCeReplication オブジェクトの場合、SubscriberConnectionString プロパティを使用するすべてのメソッドに対して、一時データベースの場所を指定する必要があります。以下の表は、このようなメソッドの一覧です。

ネイティブのみ

マネージのみ

ネイティブとマネージの両方

  • repl.Initialize

  • repl.run

  • repl.Synchronize

  • repl.BeginSynchronize

  • repl.Addsubscription

  • repl.ReinitializeSubscription

  • repl.DropSubscription

SqlCeRemoteDataAccess オブジェクトの場合、LocalConnectionString プロパティを使用するすべてのメソッドに対して、一時データベースの場所を指定する必要があります。このようなメソッドを以下に示します。

  • RDA_Object.Pull (ネイティブとマネージ)

  • RDA_Object.Push (ネイティブとマネージ)

一時データベースの拡張

データベースのサイズが大きいと、通常の操作を行っていても大量の一時データが生成されます。一時データベースが大きくなりすぎて、既定の記憶装置の記憶領域に格納できなくなるか、または一時データベースの上限に達した場合は、アプリケーションを正常に実行できません。

特に、単一の明示的なトランザクションで以下の操作をまとめて行うと、その操作が原因で一時データベースが拡張されます。

  • 大量のデータに影響する UPDATE ステートメントまたは DELETE ステートメント。

  • 並べ替え操作。並べ替えを満たすインデックスが存在する場合、並べ替えには、一時データベースを使用する必要のない場合があります。一部の並べ替え操作では、一時的な並べ替えバッファ用の一時ファイルが追加で作成される場合があります。これらのファイルは一時データベースとは異なります。各データベースには一時データベースが 1 つずつ存在しますが、一時的な並べ替えバッファ ファイルの数は任意です。

明示的なトランザクションの詳細については、「トランザクションの種類」を参照してください。

大きなデータベース ファイルが記憶装置の記憶領域制限を超えないようにするには、内部 RAM ではなくメモリ カードにデータベースを格納します。