Shrink MSSQL Server LDF File
Heute fiel mir auf meinem DB Server auf, dass die LDF Datei extrem angewachsen war. Warum wurde ich darauf aufmerksam? Weil meine Platte voll war :/ Ein Tool, dass zur Festplattenauslastung benutzt werden kann ist Treesize.
Um nun die LDF zu shrinken, einfach aus dem Management Studio, folgendes Skript ausführen. Dabei ist darauf zu achten, das ihr FTSDB durch euren Datenbank ersetzt.
SET NOCOUNT ON
DECLARE @OFF_DB sysname = 'FTSDB'
Begin
declare @database sysname
,@Login sysname
,@Host sysname
,@OsUser sysname
,@SP_ID smallint
,@CRLF varchar(2)
,@SQL_Stmt nVarchar(500)
,@NotifyMsg nVarchar(500)
declare cr_processes cursor for
select spid,
db_name(dbid) as DbName,
loginame as Login,
hostname as Host,
nt_username as OSUser
from master..sysprocesses
where spid >=50 AND spid <> @@SPID
-- close/kill all connections for this database
open cr_processes
while 1 = 1 begin
fetch cr_processes INTO @SP_ID, @database, @Login, @Host, @OSUser
if @@FETCH_STATUS <> 0 break
IF lower(@database) = lower(@OFF_DB) BEGIN
select @SQL_Stmt = N'kill ' + cast( @SP_ID as varchar(10))
print 'Killing Process : ' + cast( @SP_ID as varchar(10)) + ' for db=' + @Database
execute sp_executesql @SQL_Stmt
END
end
close cr_processes
deallocate cr_processes
End
ALTER DATABASE [FTSDB] SET RECOVERY SIMPLE
DBCC SHRINKDATABASE ('FTSDB')
ALTER DATABASE [FTSDB] SET RECOVERY FULL