使用 Compact 和 Shrink 方法

Compact 和 Shrink 方法在 Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) 中功能类似,但在减少数据库大小的方式上存在细微差别。

压缩和收缩数据库

您可以使用 Compact 方法来回收数据库文件中的空间。也可以用它来更改数据库设置,如密码和区域设置 ID (LCID) 等设置。在压缩数据库时,将创建一个新的数据库文件,重新组织表页以使其驻留在相邻的数据库页中,并通过将所有数据库数据都重写到新的数据页中来回收未使用的空间。

您还可以使用 Shrink 方法来回收数据库文件中的空间。但是 Shrink 方法不能用来更改数据库设置,因为 Shrink 方法不创建新的数据库文件;它只是重新组织记录并删除空记录。

有关 Compact 和 Shrink 的详细信息,请参阅维护数据库 (SQL Server Compact Edition)

示例

在下面的示例中,将创建一个临时的数据库文件,并使用 Compact 方法将源数据库数据传输到此临时数据库中,然后用此临时数据库替换源数据库。最终结果是得到了一个与源数据库同名但数据已被压缩的数据库。

C#

        string src     = "MyDB.sdf";
        string dest    = "MyDB.sdf.tmp";
      // Initialize SqlCeEngine object.
      SqlCeEngine engine = new SqlCeEngine("Data Source = " + src);

      try {
         engine.Compact("Data Source = " + dest);
         engine.Dispose();
        
          File.Delete(src);
          File.Move(dest, src);
      }
      catch(SqlCeException e) 
      {
         //Use your own error handling routine.
         //ShowErrors(e);
      }
      finally 
      {
         //Dispose of the SqlCeEngine object.
         engine.Dispose();
      }

Visual Basic

    Dim src  As String = "MyDB.sdf"
    Dim dest As String = "MyDB.sdf.tmp"
    ' Initialize SqlCeEngine Object.      
    Dim engine As New SqlCeEngine("Data Source = " + src)

    Try
        engine.Compact(("Data Source = " + dest))
        engine.Dispose()
      
        File.Delete(src)
        File.Move(dest, src)

    Catch e As SqlCeException
    'Use your own error handling routine.
    'ShowErrors(e)
    Finally
        'Dispose of the SqlCeEngine object.
         engine.Dispose()
    End Try

请参阅

参考

System.Data.SqlServerCe 命名空间对象
System.Data.SqlServerCe 命名空间(.NET Framework 参考文档)

帮助和信息

获取 SQL Server Compact Edition 帮助