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 

 

Join the ConversationLeave a reply

Your email address will not be published. Required fields are marked *

Comment*

Name*

Website