Freigeben über


Vorgehensweise: Komprimieren einer Datenbank (programmgesteuert)

In diesem Thema erfahren Sie, wie Sie eine SQL Server Compact 4.0-Datenbank mithilfe der Compact-Methode des SqlServerCe.Engine-Objekts und der Shrink-Methode des SqlServerCe.Engine-Objekts komprimieren. Die Methoden Compact und Shrink unterscheiden sich hinsichtlich der Reduzierung der Datenbankgröße leicht.

Sie verwenden die Compact-Methode, um Speicherplatz in der Datenbankdatei zu schaffen. Sie können sie auch verwenden, um Datenbankeinstellungen zu ändern, z. B. die Kennworteinstellungen und die LCID-Einstellungen (Gebietsschema-ID). Wenn Sie eine Datenbank komprimieren, wird eine neue Datenbankdatei erstellt, Tabellenseiten werden neu organisiert, sodass sie sich auf benachbarten Datenbankseiten befinden, und nicht verwendeter Speicherplatz wird freigegeben, indem alle Datenbankdaten in die neuen Datenseiten geschrieben werden.

Sie können auch die Shrink-Methode verwenden, um Speicherplatz in der Datenbankdatei freizugeben. Die Shrink-Methode kann jedoch nicht verwendet werden, um Datenbankeinstellungen zu ändern, da die Shrink-Methode keine neue Datenbankdatei erstellt, sondern nur Datensätze neu organisiert und leere Datensätze löscht.

Außerdem enthält dieses Thema Informationen über die Verwendung der Compact-Methode zum Ändern der Einstellung zur Berücksichtigung der Groß-/Kleinschreibung einer SQL Server Compact-Datenbank.

Weitere Informationen zu Compact und Shrink finden Sie unter Verwalten von Datenbanken (SQL Server Compact). Weitere Informationen zum Verwenden des SqlServerCe-Namespaces finden Sie in der Referenzdokumentation zum SqlServerCe-Namespace.

Verfahren für SQL Server Compact 4.0

So komprimieren Sie eine Datenbank

  1. Erstellen Sie ein Engine-Objekt, und übergeben Sie es in der Verbindungszeichenfolge an die vorhandene Datenbank, die komprimiert werden soll.

    SqlCeEngine engine = new SqlCeEngine("Data Source = AdWks.sdf");
    
  2. Rufen Sie die Compact-Methode auf. Wenn Sie die Compact-Methode aufrufen, können Sie auch neue Datenbankeigenschaften angeben. Sie können z. B. Kennwortschutz oder Verschlüsselung hinzufügen.

    engine.Compact("Data Source=; Password = <enterStrongPasswordHere>");
    

So verkleinern Sie eine Datenbank

  1. Erstellen Sie ein Engine-Objekt und übergeben Sie die Verbindungszeichenfolge an die Datenbank, die Sie verkleinern möchten.

    SqlCeEngine engine = new SqlCeEngine("Data Source = AdWks.sdf");
    
  2. Rufen Sie die Shrink-Methode auf.

    engine.Shrink();
    

So ändern Sie die Einstellung zur Berücksichtigung der Groß-/Kleinschreibung einer kompakten Datenbank

  1. Erstellen Sie ein Engine-Objekt, und übergeben Sie es in der Verbindungszeichenfolge an die vorhandene Datenbank, die komprimiert werden soll.

    SqlCeEngine engine = 
         new SqlCeEngine("Data Source= Test.sdf; LCID= 1033");
    
  2. Rufen Sie die Compact-Methode auf. Beim Aufruf der Compact-Methode kann auch eine neue Datenbankeigenschaft, wie die Berücksichtigung der Groß-/Kleinschreibung, festgelegt werden. Wenn Sie beim Aufruf der Compact-Methode die Einstellung "Case Sensitive" nicht angeben, wird die Einstellung zur Groß-/Kleinschreibung nicht geändert.

    engine.Compact("Data Source= Test.sdf; LCID= 1033; Case Sensitive=true");
    

Hinweis

Die Eigenschaft zur Berücksichtigung der Groß-/Kleinschreibung wurde mit der Version SQL Server Compact SP1 eingeführt. Weitere Informationen finden Sie unter Arbeiten mit Sortierungen (SQL Server Compact).

Beispiel

In diesem Beispiel wird eine vorhandene SQL Server Compact-Datenbank komprimiert und das Ändern von Datenbankeigenschaften gezeigt.

SqlCeEngine engine = new SqlCeEngine("Data Source = AdventureWorks.sdf");

// Specify null destination connection string for in-place compaction
//
engine.Compact(null);

// Specify connection string for new database options
//
engine.Compact("Data Source=; Password =<enterStrongPasswordHere>");
Dim engine As New SqlCeEngine("Data Source = AdventureWorks.sdf")

 ' Specify null destination connection string for in-place compaction
engine.Compact(Nothing)

' Specify connection string for new database options
'
engine.Compact("Data Source=; Password =<enterStrongPasswordHere>")

In diesem Beispiel wird eine vorhandene SQL Server Compact-Datenbank verkleinert.

SqlCeEngine engine = new SqlCeEngine("Data Source = AdventureWorks.sdf");
engine.Shrink();
Dim engine As New SqlCeEngine("Data Source = AdventureWorks.sdf")
engine.Shrink()

Im folgenden Beispiel wird veranschaulicht, wie mithilfe der Compact-Methode die Einstellung zur Berücksichtigung der Groß-/Kleinschreibung einer SQL Server Compact-Datenbank geändert wird. Im Codebeispiel wird daraufhin die GetDatabaseInfo-Methode aufgerufen, um das Gebietsschema, den Verschlüsselungsmodus und den Wert der Einstellung zur Berücksichtigung der Groß-/Kleinschreibung der Datenbank abzurufen.

// Default case-insentive connection string.
string connStringCI = "Data Source= Test.sdf; LCID= 1033";

// Set "Case Sensitive" to true to change the collation from CI to CS.
string connStringCS = 
    "Data Source= Test.sdf; LCID= 1033; Case Sensitive=true"; 

if (File.Exists("Test.sdf"))
{
   File.Delete("Test.sdf");
}

SqlCeEngine engine = new SqlCeEngine(connStringCI);
// The collation of the database is case-insensitive.
engine.CreateDatabase();

// The collation of the database will be case-sensitive because of 
// the new connection string used by the Compact method.  
engine.Compact(connStringCS);

SqlCeConnection conn = null;
conn = new SqlCeConnection(connStringCS);
conn.Open();

//Retrieve the connection string information - notice the 'Case 
// Sensitive' value.
List<KeyValuePair<string, string>> dbinfo = conn.GetDatabaseInfo();

Console.WriteLine("\nGetDatabaseInfo() results:");

foreach (KeyValuePair<string, string> kvp in dbinfo)
{
    Console.WriteLine(kvp);
}
' Default case-insentive connection string.
Dim connStringCI As String = "Data Source= Test.sdf; LCID= 1033"

' Set "Case Sensitive" to true to change the collation from CI to CS.
Dim connStringCS As String = "Data Source= Test.sdf; LCID= 1033; Case Sensitive=true"

If File.Exists("Test.sdf") Then
    File.Delete("Test.sdf")
End If

Dim engine As New SqlCeEngine(connStringCI)
' The collation of the database is case insensitive.
engine.CreateDatabase()

' The collation of the database will be case sensitive because of 
' the new connection string used by the Compact method.
engine.Compact(connStringCS)

Dim conn As SqlCeConnection = Nothing
conn = New SqlCeConnection(connStringCS)
conn.Open()

'Retrieve the connection string information - notice the 'Case Sensitive' value.
Dim dbinfo As List(Of KeyValuePair(Of String, String)) = conn.GetDatabaseInfo

Console.WriteLine(vbNewLine & "GetDatabaseInfo() results:")

Dim kvp As KeyValuePair(Of String, String)
For Each kvp In dbinfo
    Console.WriteLine(kvp)
Next

Siehe auch

Konzepte

Verwalten von Datenbanken (SQL Server Compact)

Allgemeine Datenbankaufgaben (SQL Server Compact)