Ich hoffe, Sie können mich in die richtige Richtung weisen. Ich bin kein häufiger Benutzer von T-SQL, habe aber etwas gegoogelt und das folgende Skript gefunden. Ich habe das Skript etwas korrigiert.
Ich möchte, dass das Skript:
- Auswählen aller Datenbanken mit Ausnahme der System-DBs.
- Wiederherstellung auf einfach setzen.
- So verkleinern Sie die Protokolldateien für jede Datenbank (.ldf) mit Ausnahme der Systemdatenbank
Das Skript:
USE MASTER
declare
@isql varchar(2000),
@dbname varchar(64)
declare c1 cursor for select name from master..sysdatabases where name not in ('master','model','msdb','tempdb','ReportServer','ReportServerTempDB')
open c1
fetch next from c1 into @dbname
While @@fetch_status <> -1
begin
select @isql = 'ALTER DATABASE @dbname SET RECOVERY SIMPLE'
select @isql = replace(@isql,'@dbname',@dbname)
print @isql
exec(@isql)
select @isql='USE @dbname checkpoint'
select @isql = replace(@isql,'@dbname',@dbname)
print @isql
exec(@isql)
select @isql='DBCC SHRINKFILE @dbname.ldf'
select @isql = replace(@isql,'@dbname',@dbname)
print @isql
exec(@isql)
fetch next from c1 into @dbname
end
close c1
deallocate c1
Antworten:
Verwenden Sie Script, um Protokolldateien aller Datenbanken außer den System-DBs zu verkleinern.
quelle
------...
würde zu einem Fehler führen, aber das Hervorheben der Syntax gab mir einen Hinweis darauf, was tatsächlich passieren würde. Ordentlich!Ich hatte immer eine solche Abneigung gegen Cursor, dass ich dies schrieb, weil ich es besser verstehen kann. Es basiert vollständig auf der Antwort von AA.SC (übrigens danke), nur so ausgedrückt, wie ich denke. Wenn dies mit dem übereinstimmt, was andere denken, dann großartig. Beachten Sie, dass ich es danach nicht wieder in den vollständigen Wiederherstellungsmodus versetzt habe.
quelle