SQL Server – Log file too big and disk is full, now what?
Have you ever faced the problem when your transaction log grows too big and your disk is full?
You cannot shrink the transaction log file unless you do transaction log backup first. You cannot do the transaction log backup because your disk doesn’t have enough free space. The transaction log is getting bigger every minute. The clock is ticking. What will you do?
Normally, SQL Server would make you backup the transaction log first, only then would allow you to shrink transaction log file. If you want to look more into this process, take a look at this blog.
However in this case, there’s not enough space to write the log backup file. So that wouldn’t work.
After spending a lot of time googling, I ended up this solution
BACKUP LOG DBNAME TO DISK ='NUL'
where DBNAME should be changed to the database name that we are dealing with.
What this piece of code does is that it backups the transaction log to ‘NUL’ file, which means the backup process will be executed but there’s no writing to disk. After this process completes, SQL Server will think that all the transaction log has been backed up to disk and allow us to shrink the transaction log file.
This solution is perfect, except for one thing: during this process, all transaction log will be thrown away, which means if we can’t make a full backup of the data after this process, we might face a data loss if the server crash.
Therefore, use this solution at your own risk. And remember to do a full backup of the database right after this process, just to be sure. After the full backup of the database, you’re safe.
Hope this helps!
Cheers.