Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL-Datenbank
Azure SQL Managed Instance
In diesem Artikel erfahren Sie mehr über die sofortige Initialisierung von Dateien (IFI) und wie Sie es ermöglichen, das Wachstum ihrer SQL Server-Datenbankdateien zu beschleunigen.
Daten- und Protokolldateien werden standardmäßig initialisiert, um vorhandene Daten zu überschreiben, die von zuvor gelöschten Dateien auf dem Datenträger zurückgelassen wurden. Daten- und Protokolldateien werden erstmals durch Ausfüllen der Dateien mit Nullen initialisiert, wenn Sie einen der folgenden Vorgänge durchführen:
- Erstellen einer Datenbank
- Fügen Sie Dateien oder Protokolldateien zu einer vorhandenen Datenbank hinzu.
- Vergrößern einer vorhanden Datei (einschließlich Vorgängen zur automatischen Vergrößerung).
- Wiederherstellen einer Datenbank oder Dateigruppe
In SQL Server ermöglicht die schnelle Dateiinitialisierung eine schnellere Ausführung der zuvor erwähnten Dateivorgänge, da sie verwendeten Speicherplatz freigibt, ohne diesen mit Nullen zu füllen. Stattdessen werden alte Datenträgerinhalte überschrieben, da neue Daten in die Dateien geschrieben werden.
In Azure SQL Database und Azure SQL Managed Instance ist die sofortige Dateiinitialisierung nur für Transaktionsprotokolldateien verfügbar.
Sofortige Dateiinitialisierung und das Transaktionsprotokoll
Gilt für: SQL Server 2022 (16.x) und höher, sowie Azure SQL-Datenbank und Azure SQL Managed Instance
In der Vergangenheit konnten Transaktionsprotokolldateien nicht sofort initialisiert werden. Ab SQL Server 2022 (16.x) (alle Editionen) und in Azure SQL-Datenbank und Azure SQL Managed Instance jedoch kann die sofortige Dateiinitialisierung jedoch Vorteile bei Ereignissen durch automatische Vergrößerung von Transaktionsprotokollen auf bis zu 64 MB bieten. Der Standardschritt bei der automatischen Vergrößerung für neue Datenbanken beträgt 64 MB. Ereignisse bei einer automatischen Zunahme bei Transaktionsprotokolldateien von mehr als 64 MB profitieren nicht von der sofortigen Dateiinitialisierung.
Im Gegensatz zur sofortigen Dateiinitialisierung für Datendateien, die verhindert werden, wenn die transparente Datenverschlüsselung (TDE) aktiviert ist, ist die sofortige Dateiinitialisierung für Transaktionsprotokollwachstum in Datenbanken zulässig, die TDE aktiviert haben, da die Transaktionsprotokolldatei wächst und dass das Transaktionsprotokoll in serieller Weise geschrieben wird.
Die Sofortige Dateiinitialisierung wird nur für die Stufe "Allgemeiner Zweck" und "Geschäftskritisch" der Azure SQL-Datenbank und der von Azure SQL verwalteten Instanz verwendet, um das Wachstum von Transaktionsprotokolldateien zu nutzen.
Die Sofortige Dateiinitialisierung ist in Azure SQL-Datenbank und Azure SQL Managed Instance nicht konfigurierbar.
Aktivieren der schnellen Dateiinitialisierung
Die sofortige Initialisierung von Datendateien ist nur verfügbar, wenn dem Dienstkonto oder der Dienst-SID des Datenbankmoduldiensts die SE_MANAGE_VOLUME_NAME Berechtigung gewährt wird. Mitglieder der Gruppe "Windows-Administratoren" haben dieses Recht und können sie anderen Benutzern gewähren, indem sie sie zur Sicherheitsrichtlinie " Volumenwartungsaufgaben ausführen " hinzufügen. Die SE_MANAGE_VOLUME_NAME Berechtigung ist nicht erforderlich für die sofortige Dateiinitialisierung bei Wachstumsereignissen im Transaktionslog bis zu 64 MB, was mit der Veröffentlichung von SQL Server 2022 (16.x) eingeführt wurde.
Wir empfehlen, der Service-SID des Dienstes Datenbank-Engine die Berechtigung SE_MANAGE_VOLUME_NAME zu erteilen. Dadurch wird sichergestellt, dass die Gewährung auch dann erhalten bleibt, wenn Sie das Dienstkonto des Datenbankmoduldiensts ändern. Weitere Informationen finden Sie unter Verwenden von Dienst-SIDs zum Erteilen von Berechtigungen für Dienste in SQL Server.
Wichtig
Einige Funktionen, wie z. B. Transparente Data Encryption (TDE), können die sofortige Dateiinitialisierung (IFI) verhindern. In SQL Server 2022 (16.x) und höheren Versionen sowie in Azure SQL-Datenbank und azure SQL Managed Instance ist IFI im Transaktionsprotokoll zulässig. Weitere Informationen finden Sie unter Instant file initialization and the transaction log.
In SQL Server 2016 (13.x) und späteren Versionen kann diese Berechtigung für den Datenbank-Engine-Dienst Security Identifier (SID) zum Zeitpunkt der Installation während des Setups erteilt werden.
Wenn Sie den Befehl Prompt installieren verwenden, fügen Sie das /SQLSVCINSTANTFILEINITArgument hinzu oder markieren Sie im Installationsassistenten das eingrenzende Kästchen Gewähren Sie dem SQL Server Database Engine Dienst die Berechtigung, die Wartung der Volumes durchzuführen.
So weisen Sie einem Konto oder einer Dienst-SID die Perform volume maintenance tasks Sicherheitsrichtlinie zu:
Öffnen Sie auf dem Computer, auf dem Datendateien erstellt werden, die Anwendung für lokale Sicherheitsrichtlinien (
secpol.msc).Erweitern Sie im linken Bereich Lokale Richtlinien, und klicken Sie dann auf Zuweisen von Benutzerrechten.
Doppelklicken Sie im rechten Bereich auf Durchführen von Volumewartungsaufgaben.
Wählen Sie "Benutzer oder Gruppe hinzufügen" aus, und fügen Sie das Datenbankmoduldienstkonto oder dessen Dienst-SID hinzu.
Klicken Sie auf Übernehmen, und schließen Sie dann alle Dialogfelder von Lokale Sicherheitsrichtlinie.
Starten Sie den Datenbank-Engine-Dienst neu.
Überprüfen Sie das Fehlerprotokoll des Datenbankmoduls beim Start.
Gilt für: SQL Server (Ab SQL Server 2012 (11.x) SP4, SQL Server 2014 (12.x) SP2, und SQL Server 2016 (13.x) und höher).
Wenn dem Datenbankmoduldienstkonto oder seiner Dienst-SID die
SE_MANAGE_VOLUME_NAMEBerechtigung gewährt wird, wird eine Informationsmeldung protokolliert, die dem folgenden Beispiel ähnelt:Database Instant File Initialization: enabled. For security and performance considerations see the topic 'Database Instant File Initialization' in SQL Server Books Online. This is an informational message only. No user action is required.Wenn dem Datenbankmoduldienstkonto oder seiner Dienst-SID nicht das
SE_MANAGE_VOLUME_NAMEPrivileg zugewiesen wurde, wird eine Informationsmeldung protokolliert, die dem folgenden Beispiel entspricht:Database Instant File Initialization: disabled. For security and performance considerations see the topic 'Database Instant File Initialization' in SQL Server Books Online. This is an informational message only. No user action is required.
Hinweis
Verwenden Sie in SQL Server den Wert
instant_file_initialization_enabledin der sys.dm_server_services dynamischen Verwaltungsansicht, um zu ermitteln, ob die Sofortige Dateiinitialisierung für Ihre Instanz aktiviert ist.
Sicherheitshinweise
Es wird empfohlen, die schnelle Dateiinitialisierung zu aktivieren, da die Vorteile das Sicherheitsrisiko überwiegen können.
Bei Verwendung der schnellen Dateiinitialisierung wird der gelöschte Datenträgerinhalt nur überschrieben, wenn neue Daten in die Datei geschrieben werden. Aus diesem Grund ist der gelöschte Inhalt möglicherweise für ein nicht autorisiertes Prinzipal zugänglich, bis andere Daten auf diesen speziellen Bereich der Datendatei schreiben.
Während die Datenbankdatei an die Instanz von SQL Server angefügt ist, wird diese Gefahr einer Offenlegung von Informationen durch die besitzerverwaltete Zugriffssteuerungsliste (Discretionary Access Control List, DACL) in der Datei verringert. Die DACL ermöglicht den Dateizugriff nur auf das SQL Server-Dienstkonto, seine Dienst-SID und den lokalen Administrator. Wenn die Datei jedoch abgetrennt wird, ist sie potenziell für einen Benutzer oder Dienst zugänglich, der nicht über die SE_MANAGE_VOLUME_NAME-Berechtigung verfügt.
Ähnliche Überlegungen existieren, 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 mit einer entsprechenden DACL geschützt wird.
...eine Datei mit der IFI vergrößert wird. Ein SQL Server-Administrator könnte Zugriff auf die grundlegenden Inhalte der Seite und bereits gelöschte Inhalte erhalten.
...die Datenbankdateien auf einem Storage Area Network gehostet werden. Es ist auch möglich, dass im Storage Area Network neue Seiten immer als vorinitialisiert vorhanden sind und eine Neuinitialisierung der Seiten durch das Betriebssystem einen unnötigen Overhead darstellt.
Wenn Sie sich Gedanken über eine potenzielle Offenlegung von Informationen machen, sollten Sie eine oder beide der folgenden Maßnahmen treffen:
Stellen Sie immer sicher, dass alle angebundenen Daten- und Sicherungsdateien über restriktive DACLs verfügen.
Deaktivieren Sie die schnelle Dateiinitialisierung für die Instanz von SQL Server. Nehmen Sie dazu
SE_MANAGE_VOLUME_NAMEaus dem Dienstkonto der Datenbank-Engine und ihrer Dienst-SID zurück.Hinweis
Das Deaktivieren von IFI erhöht die Wachstumszeit für Datendateien und wirkt sich nur auf Dateien aus, die erstellt oder vergrößert werden, nachdem die Berechtigung widerrufen wurde.
SE_MANAGE_VOLUME_NAME Privileg
Die SE_MANAGE_VOLUME_NAME Berechtigung kann in windows-Verwaltungstools, Applet für lokale Sicherheitsrichtlinien , zugewiesen werden. Klicken Sie unter Lokale Richtlinien auf User Right Assignment (Zuweisung von Benutzerrechten), und ändern Sie die Eigenschaft Durchführen von Volumewartungsaufgaben.
Überlegungen zur Leistung
Der Initialisierungsprozess der Datenbankdatei schreibt Nullen in die neuen Bereiche der Datei, während diese initialisiert wird. Die Dauer dieses Prozesses hängt von der Größe des zu initialisierenden Dateibereichs sowie von der Reaktionszeit und der Kapazität des Storage-Systems ab. Wenn die Initialisierung lange dauert, werden möglicherweise die folgenden Meldungen im SQL Server-Fehlerprotokoll und im Anwendungsprotokoll aufgezeichnet.
Msg 5144
Autogrow of file '%.*ls' in database '%.*ls' was cancelled by user or timed out after %d milliseconds. Use ALTER DATABASE to set a smaller FILEGROWTH value for this file or to explicitly set a new file size.
Msg 5145
Autogrow of file '%.*ls' in database '%.*ls' took %d milliseconds. Consider using ALTER DATABASE to set a smaller FILEGROWTH for this file.
Eine lange automatische Vergrößerung einer Datenbank und/oder Transaktionsprotokolldatei kann zu Problemen hinsichtlich der Abfrageleistung führen. Ein Vorgang, der die automatische Vergrößerung einer Datei erfordert, hält Ressourcen wie z. B. Locks oder Latches während der Dauer des Dateivergrößerungsvorgangs fest. Möglicherweise werden für Latches für Zuordnungsseiten lange Wartezeiten angezeigt. Der Vorgang, der die lange automatische Vergrößerung erfordert, zeigt den Wartetyp PREEMPTIVE_OS_WRITEFILEGATHER an.