临时数据库
Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) 创建了一个用于存储临时数据的临时数据库,如:
- 在查询期间所创建的临时结果集。
- 在执行 ORDER BY、GROUP BY 或 DISTINCT 子句时所创建的临时排序表。
只有在显式指定要创建临时数据库时,才会进行创建。在引擎启动时必须指定数据库名称。在数据库引擎关闭时,将删除临时数据库。如果 SQL Server Compact Edition 应用程序异常终止或者文件同步出现问题,临时数据库文件将保留在系统中。那些文件必须手动进行删除。
临时数据库的位置
对于需要大型临时数据库的操作,应显式指定创建临时数据库的位置。如果未指定临时数据库的位置,则当前数据库的位置将用作临时数据库的位置。您不需要指定临时数据库的名称;临时数据库的文件名以“SQLCE”开始,例如:SQLCE334241234.tmp。
在启动引擎之前必须先指定临时数据库的位置,且在引擎运行时不能对其进行更改。在压缩数据库时,您可以更改临时数据库的位置。有关详细信息,请参阅维护数据库和如何压缩数据库(以编程方式)。
指定位置
通过使用 temp path、temp file directory 或 ssce:temp file directory 参数,可以在数据库的连接字符串中指定临时数据库的位置。
注意: |
---|
为临时数据库指定的位置必须已经存在。 |
有关详细信息,请参阅如何使用 ADO.NET 指定临时数据库的位置(以编程方式)、如何使用 Replication 和 RDA 对象指定临时数据库的位置和如何使用 OLE DB 指定临时数据库的位置(以编程方式)。
您可以与 SqlCeConnection、SqlCeReplication 和 SqlCeRemoteDataAccess 对象一起使用连接字符串。对于 SqlCeReplication 对象,必须对使用 SubscriberConnectionString 属性的所有方法都包含临时数据库的位置。下表将列出这些方法:
仅限本机 | 仅限托管 | 本机和托管 |
---|---|---|
|
|
|
对于 SqlCeRemoteDataAccess 对象,必须对使用 LocalConnectionString 属性的所有方法都包含临时数据库的位置。这些方法包括:
- RDA_Object.Pull(本机和托管)
- RDA_Object.Push(本机和托管)
临时数据库的增长
在正常执行期间大型数据库会生成大量的临时数据。如果临时数据库的增长导致默认存储设备上的存储空间不足或者达到临时数据库的最大限制值,则应用程序会失败。
以下操作会导致临时数据库的增长,尤其在一个显式事务中含有一组操作的情况下:
- 会影响很多数据的 UPDATE 和 DELETE 语句。
- 排序操作。如果有符合排序要求的索引,则可能不需要使用临时数据库进行排序。某些排序操作可能会为临时排序缓冲区创建其他一些临时文件。这些文件不同于临时数据库。每个数据库只能有一个临时数据库,但可以有任意多个临时排序缓冲区文件。
有关显式事务的详细信息,请参阅事务的类型。
为避免大型数据库文件增长到超出设备的存储限制,可以将数据库存储到存储卡上,而不是内部 RAM 中。