Will man alle Datenbanken, bspw. auf einem Testserver, in den Wiederherstellungsmodell »Einfach« versetzen, so kann man das ganz einfach per TSQL Statement vornehmen
use master SELECT 'ALTER DATABASE [' + name + '] SET RECOVERY SIMPLE' from master..sysdatabases where name not in ('master','model','msdb','tempdb') |
Der obige SELECT erzeugt die Statements, die man dann ausführen muss, um das Wiederherstellungsmodell zu verändern.
Alternativ kann man so die Datenbank auch in die anderen beiden Wiederherstellungsmodi versetzen. Hierfür muss »SIMPLE« im obigen Statement nur durch »FULL« oder »BULK_LOGGED« ersetzt werden. Will man diesen Vorgang automatisieren, so kann man hierfür bspw. eine Stored Procedure erstellen, die Nachts automatisch als Auftrag vom SQL Server ausgeführt wird. So könnte hier ein simples Beispiel aussehen:
CREATE PROCEDURE SetRecoveryMode AS BEGIN SET NOCOUNT ON DECLARE @ToDo TABLE ( ID int IDENTITY PRIMARY KEY, Statement nvarchar(max), Completed bit ) INSERT INTO @ToDo (Statement, Completed) SELECT 'ALTER DATABASE [' + name + '] SET RECOVERY SIMPLE', 0 from master..sysdatabases where name not in ('master','model','msdb','tempdb') DECLARE @CurrentID int DECLARE @CurrentStatement nvarchar(max) WHILE EXISTS (SELECT * FROM @ToDo WHERE Completed = 0) BEGIN SELECT TOP 1 @CurrentID = ID, @CurrentStatement = Statement FROM @ToDo WHERE Completed = 0 ORDER BY ID ASC EXEC (@CurrentStatement) UPDATE @ToDo SET Completed = 1 WHERE ID = @CurrentID END SET NOCOUNT ON END |
Kommentare sind geschlossen.