Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
blog:2010:0601_wiederherstellungsmodus-bei-allen-datenbanken-aendern [2015/05/07 14:27] 127.0.0.1 Externe Bearbeitung |
blog:2010:0601_wiederherstellungsmodus-bei-allen-datenbanken-aendern [2019/12/27 11:58] (aktuell) |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ~~META: | ||
+ | date created = 2010-06-01 10:02 | ||
+ | ~~ | ||
+ | ====== Wiederherstellungsmodus bei allen Datenbanken ändern ====== | ||
+ | Will man alle Datenbanken, bspw. auf einem Testserver, in den Wiederherstellungsmodell »Einfach« versetzen, so kann man das ganz einfach per TSQL Statement vornehmen: | ||
+ | |||
+ | <code tsql> | ||
+ | USE master | ||
+ | SELECT 'ALTER DATABASE [' + name + '] SET RECOVERY SIMPLE' FROM master..sysdatabases WHERE name not in ('master','model','msdb','tempdb') | ||
+ | </code> | ||
+ | |||
+ | 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: | ||
+ | |||
+ | <code tsql> | ||
+ | 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 OFF | ||
+ | END | ||
+ | </code> |