Am Wochenende ist eine Festplatte fast voll gelaufen, weil es letzte Woche eine Update (Änderte bei knapp 150 Datenbanken viele Tabellen) gab. Warum es einen Anstieg von Daten auf der Log Festplatte des SQL Servers gab war damit klar. Hier nun die Lösung: Alle Datenbanken auf SIMPLE stellen und danach per Maintenance Plan alle Datenbanken shrinken.

Was brauchen wir?

  • eine Liste aller Datenbanken die auf FULL stehen
  • eine Query die eine Datenbank auf SIMPLE stellt
DECLARE @TableName nvarchar(255)
DECLARE @SQL nvarchar(4000)
 
-- Erstelle einen Temp-Table
Create Table ##temp (
TableName nvarchar(255)
)
 
-- Ermitteln aller relevanten Datenbanken
Insert Into ##temp (TableName)
select name as TABLE_NAME FROM sys.databases where recovery_model_desc like 'FULL'
 
-- Durch das Ergebnis loopen
while exists (Select * From ##temp)
begin
Set NOCOUNT ON
select top 1 @TableName = TableName from ##temp order by TableName asc
 
SET @SQL = 'ALTER DATABASE ' + @TableName + ' SET RECOVERY SIMPLE'
print @SQL
 
delete ##temp where TableName = @TableName
end
drop table ##temp

Im SQL Management Studio einfach die Query ausführen.

sql-management-alle-datenbanken-auf-simple-stellen

Ergebniss in die Zwischenablage kopieren und in einen neue Abfrage kopieren.

sql-management-alle-datenbanken-auf-simple-stellen-ausfuehren

Dann ausführen und schon stehen alle Datenbanken auf SIMPLE.

Fertig.

Nun nur noch einen Wartungsplan erstellen, eine Task Datenbank verkleinern hinzufügen und den Wartungsjob laufen lassen. Nachdem alles durchgelaufen war, war auf der Festplatte wieder ne Menge platz.