Friday, August 26, 2016

MsSQL log truncate

If u cannot truncate database log/ldf file
Take full backup of database
Restored to another instance
Close all connection
Run the attached script
Take full Backup of backup second instance database
Restore into original server database



Set quoted_identifier off
use master
go
DECLARE @dataname varchar(30)
DECLARE @dataname_header varchar(75)
DECLARE datanames_cursor CURSOR FOR SELECT name FROM sysdatabases
        WHERE name in ('DBName')
OPEN datanames_cursor
  FETCH NEXT FROM datanames_cursor INTO @dataname
  WHILE (@@fetch_status <> -1)
    BEGIN
      IF (@@fetch_status = -2)
        BEGIN
  FETCH NEXT FROM datanames_cursor INTO @dataname
           CONTINUE
        END
 SELECT @dataname_header = "Database " + RTRIM(UPPER(@dataname))
       PRINT " "
 PRINT @dataname_header
 EXEC("BACKUP LOG " + @dataname + " WITH TRUNCATE_ONLY")
 EXEC("DBCC SHRINKDATABASE (" + @dataname + ",TRUNCATEONLY)")
       FETCH NEXT FROM datanames_cursor INTO @dataname
      END
DEALLOCATE datanames_cursor
PRINT ""
PRINT " "
PRINT "Free space removed and transaction log truncated for each user database"

No comments:

Post a Comment