Benutzer-Werkzeuge

Webseiten-Werkzeuge


blog:2010:0601_wiederherstellungsmodus-bei-allen-datenbanken-aendern

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

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>​
blog/2010/0601_wiederherstellungsmodus-bei-allen-datenbanken-aendern.1431001625.txt.gz · Zuletzt geändert: 2019/12/27 11:58 (Externe Bearbeitung)