Saya harap Anda bisa mengarahkan saya ke arah yang benar. Saya bukan pengguna T-SQL yang sering, tetapi saya melakukan beberapa pencarian google, dan menemukan skrip di bawah ini. Saya sedikit mengoreksi naskah.
Saya ingin skrip:
- Untuk memilih semua basis data, kecuali DB sistem.
- Untuk mengatur pemulihan menjadi sederhana.
- Untuk mengecilkan file log untuk setiap db (.ldf), kecuali sistem db
Naskah:
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
Jawaban:
Gunakan Skrip untuk Mengecilkan file Log dari semua database selain dari DB sistem.
sumber
------...
akan menghasilkan kesalahan tetapi penyorotan sintaks memberi saya petunjuk tentang apa yang sebenarnya akan terjadi. Rapi!Saya selalu memiliki keengganan terhadap kursor, bahwa saya menulis ini karena saya bisa lebih memahaminya. Ini benar-benar didasarkan pada jawaban AA.SC (terima kasih ngomong-ngomong), hanya dengan cara yang menurut saya. Jika ini cocok dengan apa yang dipikirkan orang lain, maka hebat. Catatan, saya tidak mengembalikannya ke mode pemulihan penuh sesudahnya.
sumber