Einschränkung der Verwendung von COPY ONLY-Sicherungen durch Benutzer


13

Ich möchte den Protokollversand in meiner Produktionsumgebung bereitstellen. Dies bedeutet, dass ich Sicherungsketten verwalten muss, die durch Sicherungskopien zum Aktualisieren von Entwicklungsumgebungen unterbrochen werden können. Wenn ich einen Fehler habe und die Protokollsicherungen zum Wiederherstellen zu einem bestimmten Zeitpunkt verwenden möchte, muss die Sicherung auch vom Entwickler erstellt werden.

Dies würde nicht passieren, wenn die Entwickler nur COPY ONLY-Backups verwenden würden. Meine Frage lautet also: Gibt es eine Möglichkeit, Benutzer darauf zu beschränken, nur COPY ONLY-Sicherungen durchführen zu können?

Antworten:


12

Sie brauchen sie nicht zu benutzen COPY_ONLY. Nur ein Intermediate LOG BACKUPSwird das brechen LSN. Was Sie tun können, ist das explizite DENY BACKUP LOG to [user|group]Privilegieren von Entwicklern oder Entwicklergruppen. Alternativ können Sie einfach eine ROLLE erstellen und das Sicherungsprotokoll für diese Rolle ablehnen. Alle Benutzer in dieser Rolle erben die Berechtigungen.

z.B

USE test_kin
GO
CREATE ROLE [deny_log_backups]
GO
USE [test_kin]
GO
CREATE USER [Kin] FOR LOGIN [Kin]
GO
ALTER USER [Kin] WITH DEFAULT_SCHEMA=[dbo]
GO
use test_kin
GO
DENY BACKUP LOG TO [deny_log_backups]
GO
USE test_kin
GO
EXEC sp_addrolemember N'deny_log_backups', N'kin'
GO

Testen Sie es jetzt:

backup database [test_kin]
to disk = 'C:\crap_test\kin_test_full.bak'
with compression, stats =10, init

---- ### success for FULL BACKUP 

backup log [test_kin]
to disk = 'C:\crap_test\kin_test_log.log'

 --- $$$ ERROR MESSAGE 

Msg 262, Level 14, State 1, Line 3
BACKUP LOG permission denied in database 'test_kin'.
Msg 3013, Level 16, State 1, Line 3
BACKUP LOG is terminating abnormally.

2

Gute Frage, auf die ich keine gute Antwort finden kann, aber hier ist eine. Was wäre, wenn Sie alle Benutzer von der Sicherungsrolle entfernen und dann eine Aufgabe erstellen, die den Befehl execute as für einen bestimmten Benutzer verwendet, der die Sicherungsdatei copy_only an einem bestimmten Speicherort ablegt?


-1

Möglicherweise können Sie 1) solchen Benutzern Sicherungen (Protokoll und / oder vollständige Sicherungen) verweigern, 2) ihnen jedoch ermöglichen, einen Auftrag zu starten, der eine Nur-Kopie-Sicherung einer bestimmten Datenbank ausführt (die unter einem gewährten Konto ausgeführt wird) Sicherungserlaubnis). Ich habe eine solche Lösung, um automatisierte Wiederherstellungen von Datenbanken für Untersuchungszwecke von PROD zu PRE-PROD zu automatisieren. Bestimmte Benutzer haben Zugriff auf einen Auftrag (in PRE-PROD), der eine Nur-Kopie-Sicherung in PROD ausführt, die Datei von PROD nach PRE-PROD verschiebt und dann die verschobene Sicherung auf dem PRE-PROD-Server wiederherstellt. Stellen Sie daher sicher, dass diese Benutzer keine Möglichkeit haben, die Sicherungslogik von PROD zu unterbrechen.

(Bei der Untersuchung von Problemen könnten Entwickler versucht sein, eine vollständige Sicherung zu erstellen, um sie auf einem Testserver wiederherzustellen, indem sie die Datei tatsächlich von der Quelle auf den Testserver verschieben, ohne zu wissen, dass sie die Sicherungslogik verletzt. Ich bin damit einverstanden, dass das Kopieren erzwungen wird -nur Backups sind wichtig.)


Warum machen Sie sich mit copy_only Sorgen um eine vollständige Sicherung, da das OP nur die LSNs aufteilt?
Kin Shah

Nun, ein vollständiges Backup zu erstellen und dann die Datei wegzuschieben, würde die Logik brechen, oder? Wenn ein Entwickler dies tut und die Datei auf einen Entwicklungsserver verschiebt, stimmt der FirstLSN-Wert der nächsten LOG-Sicherung mit dem CheckPointLSN der fehlenden FULL-Sicherung überein. Wie kann man dann ohne die fehlende Datei wiederherstellen?
Benjamin RAIBAUD

Bei einer vollständigen Sicherung wird die LSN nicht zurückgesetzt. Nur eine Protokollsicherung wird es tun. Ich nehme an, Sie verwechseln die Dinge.
Kin Shah

1
Oh ja, du hast recht. Das wäre wichtig, wenn Sie anstelle von Protokollsicherungen Diff-Sicherungen durchführen. Dann ist es riskant, sich ganz zu entfernen. Ich vermische die Dinge, danke.
Benjamin RAIBAUD
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.