~~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:
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 OFF
END