Freigeben über


Initialisierung von Datenbank-Sofortdateien

Daten- und Protokolldateien werden initialisiert, um vorhandene Daten, die auf dem Datenträger verbleiben, aus zuvor gelöschten Dateien zu überschreiben. Daten- und Protokolldateien werden zuerst initialisiert, indem die Dateien mit Nullen gefüllt werden, wenn Sie einen der folgenden Vorgänge ausführen:

  • Erstellen einer Datenbank

  • Fügen Sie einer vorhandenen Datenbank Dateien, Protokolle oder Daten hinzu.

  • Vergrößern Sie die Größe einer vorhandenen Datei (einschließlich automatischer Vergrößerungsvorgänge).

  • Wiederherstellen einer Datenbank oder Dateigruppe.

Die Dateiinitialisierung bewirkt, dass diese Vorgänge länger dauern. Wenn daten jedoch zum ersten Mal in die Dateien geschrieben werden, muss das Betriebssystem die Dateien nicht mit Nullen ausfüllen.

Sofortige Dateiinitialisierung

In SQL Server können Datendateien sofort initialisiert werden. Dies ermöglicht eine schnelle Ausführung der zuvor erwähnten Dateivorgänge. Die sofortige Dateiinitialisierung gibt Speicherplatz frei, ohne diesen Speicherplatz mit Nullen zu füllen. Stattdessen werden Datenträgerinhalte überschrieben, da neue Daten in die Dateien geschrieben werden. Protokolldateien können nicht sofort initialisiert werden.

Hinweis

Die Sofortige Dateiinitialisierung ist nur in MicrosoftWindows XP Professional oder Windows Server 2003 oder höheren Versionen verfügbar.

Die Sofortige Dateiinitialisierung ist nur verfügbar, wenn das SQL Server (MSSQLSERVER)-Dienstkonto SE_MANAGE_VOLUME_NAME gewährt wurde. Mitglieder der Windows-Administratorgruppe haben dieses Recht und können es anderen Benutzern gewähren, indem sie sie zur Sicherheitsrichtlinie " Volumenwartungsaufgaben ausführen " hinzufügen. Weitere Informationen zum Zuweisen von Benutzerrechten finden Sie in der Windows-Dokumentation.

Die Sofortige Dateiinitialisierung ist nicht verfügbar, wenn TDE aktiviert ist.

So erteilen Sie einem Konto die Perform volume maintenance tasks Berechtigung:

  1. Öffnen Sie auf dem Computer, auf dem die Sicherungsdatei erstellt wird, die Local Security Policy Anwendung (secpol.msc).

  2. Erweitern Sie im linken Bereich lokale Richtlinien, und klicken Sie dann auf Benutzerrechtezuweisung.

  3. Doppelklicken Sie im rechten Bereich auf "Volumenwartungsaufgaben ausführen".

  4. Klicken Sie auf "Benutzer oder Gruppe hinzufügen ", und fügen Sie alle Benutzerkonten hinzu, die für Sicherungen verwendet werden.

  5. Klicken Sie auf "Übernehmen", und schließen Sie dann alle Local Security Policy Dialogboxen.

Sicherheitsüberlegungen

Da gelöschte Daten erst überschrieben werden, wenn neue Daten in die Dateien geschrieben werden, kann von einer nicht autorisierten Person darauf zugegriffen werden. Während die Datenbankdatei an die Instanz von SQL Server angefügt ist, wird diese Bedrohung für die Offenlegung von Informationen durch die diskretionäre Zugriffssteuerungsliste (DACL) in der Datei reduziert. Diese DACL ermöglicht den Dateizugriff nur auf das SQL Server-Dienstkonto und den lokalen Administrator. Wenn die Datei jedoch getrennt wird, kann auf sie von einem Benutzer oder Dienst zugegriffen werden, der nicht über SE_MANAGE_VOLUME_NAME verfügt. Eine Bedrohung ähnlicher Art besteht, wenn die Datenbank gesichert wird. Der gelöschte Inhalt kann für einen nicht autorisierten Benutzer oder Dienst verfügbar werden, wenn die Sicherungsdatei nicht durch eine entsprechende DACL geschützt ist.

Wenn das Potenzial für die Offenlegung gelöschter Inhalte ein Problem darstellt, sollten Sie eine oder beide der folgenden Aktionen ausführen:

  • Stellen Sie immer sicher, dass alle getrennten Datendateien und Sicherungsdateien restriktive DACLs aufweisen.

  • Deaktivieren Sie die Sofortige Dateiinitialisierung für die Instanz von SQL Server, indem Sie SE_MANAGE_VOLUME_NAME aus dem SQL Server-Dienstkonto widerrufen.

Hinweis

Das Deaktivieren der Sofortdateiinitialisierung wirkt sich nur auf Dateien aus, die erstellt oder vergrößert werden, nachdem das Benutzerrecht widerrufen wurde.

Siehe auch

CREATE DATABASE (SQL Server Transact-SQL)