Sichern von Daten- und Protokolldateien

SQL Server legt Dateizugriffsberechtigungen für die physikalischen Daten- und Protokolldateien jeder Datenbank für spezielle Konten fest. Durch diese Berechtigungen wird verhindert, dass die Dateien manipuliert werden, wenn sie sich in einem Verzeichnis mit offenen Berechtigungen befinden. Wenn z. B. die Berechtigungen nicht festgelegt und die Betriebssystemberechtigungen für das Datenbankverzeichnis auf Vollzugriff für Jeden festgelegt wurden, kann jedes Konto, das Zugriff auf dieses Verzeichnis besitzt, die Datenbankdateien löschen oder ändern, selbst wenn es keine SQL Server-Berechtigungen zum Ändern der Datenbank selbst besitzt.

Dateizugriffsberechtigungen werden bei jedem der folgenden Datenbankvorgänge festgelegt: Erstellen, Anfügen, Trennen, Ändern zum Hinzufügen einer neuen Datei, Sichern oder Wiederherstellen.

Überlegungen zur Verwaltung

  • Berechtigungen werden nur festgelegt, wenn das Dateisystem die Win32-Zugriffssteuerung unterstützt, wie das z. B. beim NTFS-Dateisystem der Fall ist. Database Engine (Datenbankmodul) kann keine Berechtigungen für Dateien festlegen, die auf Rawpartitionen oder in den Dateisystemen FAT und FAT32 gespeichert sind.

  • Wenn der Betriebssystemadministrator manuell die Dateiberechtigungen ändert, versucht Database Engine (Datenbankmodul) nicht, die ursprünglichen Berechtigungen zu erzwingen.

  • Wenn das SQL Server-(MSSQLSERVER)-Dienstkonto mithilfe von SQL Server Management Studio geändert wird, versucht Management Studio, dieses Konto und die richtigen Berechtigungen allen vorhandenen Datenbankdateien hinzuzufügen. Das kann für Datenbanken einen Fehler erzeugen, die zum Änderungszeitpunkt des Dienstkontos nicht verwendbar sind.

  • Wenn das MSSQLSERVER-Dienstkonto mithilfe von Microsoft Windows-Diensten geändert wird, muss der Betriebssystemadministrator dem neuen Konto Vollzugriff-Berechtigungen für alle Datenbank- und Protokolldateien erteilen.

Erstellen einer Datenbank oder Hinzufügen einer neuen Datei

Wenn eine Datenbank erstellt oder zum Hinzufügen einer neuen Datei geändert wird, werden dem MSSQLSERVER-Dienstkonto und den Mitgliedern der lokalen Administratorengruppe Vollzugriff-Berechtigungen für die Daten- und Protokolldateien erteilt. Der Dateizugriff wird für alle anderen Konten entfernt.

Sichern und Wiederherstellen einer Datenbank

Vollzugriff-Berechtigungen auf die Datei, die als Ziel der Wiederherstellung oder der Sicherung erstellt wird, werden dem MSSQLSERVER-Dienstkonto und den Mitgliedern der lokalen Administratorengruppe erteilt.

Wenn die Datei bereits vorhanden ist und das MSSQLSERVER-Dienstkonto bereits über Berechtigungen für die Datei verfügt, wird der Sicherungs- oder Wiederherstellungsvorgang fortgesetzt. Ansonsten nimmt Database Engine (Datenbankmodul) die Identität des Windows-Kontos der Verbindung an, die den Vorgang ausführt, und versucht, die Datei zu öffnen. Nachdem die Datei geöffnet wurde, werden die Berechtigungen dem MSSQLSERVER-Dienstkonto und den Mitgliedern der lokalen Administratorengruppe erteilt.

Standbydateien (Rückgängigdateien) werden in gleicher Weise behandelt.

Trennen und Anfügen einer Datenbank

Beim Trennen oder Anfügen einer Datenbank nimmt Database Engine (Datenbankmodul) die Identität des Windows-Kontos der Verbindung an, die den Vorgang ausführt, um sicherzustellen, dass das Konto über die Berechtigungen zum Zugriff auf die Datenbank- und Protokolldateien verfügt. Für Konten mit dem gemischten Sicherheitsmodus, die SQL Server-Anmeldungen verwenden, kann der Identitätswechsel einen Fehler erzeugen.

SicherheitshinweisSicherheitshinweis

Sie sollten keine Datenbanken aus unbekannten oder nicht vertrauenswürdigen Quellen anfügen. Solche Datenbanken könnten bösartigen Code enthalten, der unerwünschten Transact-SQL-Code ausführt oder Fehler durch Ändern des Schemas oder der physikalischen Datenbankstruktur verursacht. Vor der Verwendung einer Datenbank aus einer unbekannten oder nicht vertrauenswürdigen Quelle sollten Sie DBCC CHECKDB für die Datenbank auf einem Nichtproduktionsserver ausführen und auch den Code, wie z. B. gespeicherte Prozeduren oder sonstigen benutzerdefinierten Code, in der Datenbank überprüfen.

Die folgende Tabelle zeigt die für die Datenbank- und Protokolldateien festgelegten Berechtigungen, nachdem ein Anfüge- oder Trennvorgang abgeschlossen ist, und ob Database Engine (Datenbankmodul) die Identität des Kontos annehmen kann, das die Verbindung herstellt.

Vorgang

Identität des Kontos, das die Verbindung herstellt, kann angenommen werden

Dateiberechtigungen werden erteilt an

Trennen

Ja

Nur das Konto, das den Vorgang ausführt. Zusätzliche Konten können durch einen Betriebssystemadministrator hinzugefügt werden, wenn sie nach dem Trennen der Datenbank benötigt werden.

Trennen

Nein

Das SQL Server-(MSSQLSERVER)-Dienstkonto und die Mitglieder der lokalen Windows-Administratorengruppe.

Anfügen

Ja

Das SQL Server-(MSSQLSERVER)-Dienstkonto und die Mitglieder der lokalen Windows-Administratorengruppe.

Anfügen

Nein

Das SQL Server-(MSSQLSERVER)-Dienstkonto.

Szenario

Das folgende Szenario veranschaulicht die Berechtigungen, die erteilt werden, wenn eine Datenbank erstellt, beim Trennen geändert und angefügt wird.

User1, ein Mitglied der festen Serverrolle dbcreator, erstellt die Sales-Datenbank, die die Datei e:\Data\Sales.mdf and f:\Log\Sales.ldf enthält. Zum Erstellungszeitpunkt der Datenbank ist das MSSQLSERVER-Dienstkonto SQLServiceAccount2 ein lokales Konto. Vollsteuerung-Berechtigungen für die Datenbank- und Protokolldateien werden an SQLServiceAccount2 und an die Mitglieder der Windows-Administratorengruppe erteilt.

Es wird entschieden, die Sales-Datenbank zu einer anderen Instanz von SQL Server auf demselben Server zu verschieben. Admin3, ein Mitglied der festen Serverrolle sysadmin, trennt die Datenbank. Database Engine (Datenbankmodul) legt die Berechtigungen für die Dateien Sales.mdf und Sales.ldf fest, sodass nur das Admin3-Konto die Berechtigungen zum Zugriff auf die Dateien hat.

Admin3 stellt die Verbindung mit der anderen Instanz von SQL Server her, das ist SalesServer. Das MSSQLSERVER-Dienstkonto für die SalesServer-Instanz ist SQLSalesServiceAccount. Admin3, ein SQL Server-Administrator für diese Instanz, fügt die Sales-Datenbank an. Vollsteuerung-Berechtigungen werden an SQLSalesServiceAccount und an die Mitglieder der Windows-Administratorengruppe erteilt.