Truncate and Shrink SharePoint Transaction Logs, Databases
Some of the Transaction Logs and databases grown rapidly and on urgent basis I had to truncate the Log files on SharePoint Content Databases. Here is the SQL script to truncate and shrink SharePoint transaction log:
This sets the recovery model to "SIMPLE" temporarily, Shrink the Log file and set back to "FULL" recovery model. After executing the SQL script to truncate transaction log in my SharePoint 2010, it recovered me considerable space now!
Shrink SQL Server Database, Log Files from SSMS:
Shrinking can be done from SQL Server Management Studio also.
Go to SSMS >> Right click the target Database >> Tasks >> Shrink >> Files (or Database)
Select the File Type and click on "OK" button to start shrinking. Here I've selected "Log" File type to shrink SharePoint transaction log files.
Same applies when you want to shrink SharePoint database size. I find it useful when I had to shrink SharePoint search databases.
How about removing the existing Log file and create a new one?
I had SharePoint Content database log file of 30GB! So, wanted to remove the existing log and create a new one. Simply add a new log file and remove the existing one from SSMS. Or you can:
Use <database_name> GO ALTER DATABASE <database_name> SET RECOVERY SIMPLE GO DBCC SHRINKFILE (Database_Log_Name, 1); GO ALTER DATABASE <database_name> SET RECOVERY FULL GOImportant: Please note the <database_Name> and <database_log_Name> in above examples are logical names.
This sets the recovery model to "SIMPLE" temporarily, Shrink the Log file and set back to "FULL" recovery model. After executing the SQL script to truncate transaction log in my SharePoint 2010, it recovered me considerable space now!
Shrink SQL Server Database, Log Files from SSMS:
Shrinking can be done from SQL Server Management Studio also.
Go to SSMS >> Right click the target Database >> Tasks >> Shrink >> Files (or Database)
Select the File Type and click on "OK" button to start shrinking. Here I've selected "Log" File type to shrink SharePoint transaction log files.
Same applies when you want to shrink SharePoint database size. I find it useful when I had to shrink SharePoint search databases.
How about removing the existing Log file and create a new one?
I had SharePoint Content database log file of 30GB! So, wanted to remove the existing log and create a new one. Simply add a new log file and remove the existing one from SSMS. Or you can:
- Detach the database
- Rename the log file
- Attach the database without the log file
- Delete the old log file
In case you don't find any decrease in log file size, Try setting the Database to Single user Mode (Go to : Database Properties >> Options >> Set "Restrict Access" to Single User ), repeat the above steps and then revert the status again to Multi_User!
Truncate and Shrink SharePoint Transaction Logs, Databases
Reviewed by Unknown
on
January 14, 2012
Rating:

Thanks a Ton!
ReplyDeleteNice one :-)
ReplyDeleteHello! Very nice blog - I will be checking out your other posts soon.
ReplyDeleteOn the Shrink Log File, is there any "damage" that can be done just by shrinking the log? Should the content DB be backed up first?
Also, if on SQL Server 2008 R2, and compatibility is 2005, is there any harm in raising the compatibility? This database is not going to be used in a 2005 environment.
Thanks!
1. Shrinking the log is actually clears inactive part of the log, which consists of list of operations that have been performed and used as a reference for restores, rollbacks,checkpoints, etc. Shrinking the log does not loose any uncommitted log data!
Delete2. Database compatibility level mostly affects SQL syntax and query parsing, and it should have no impact on performance; anyway, consider it as a best practice.
Remember to backup your database after you have done the following.:
ReplyDeleteAlternatively, You can set the recovery model to "SIMPLE" temporarily, Shrink the Log file and set back to "FULL" recovery model
https://technet.microsoft.com/en-us/library/ms178052(v=sql.105).aspx
Read more: http://www.sharepointdiary.com/2012/01/truncate-transaction-logs-of-sharepoint.html#ixzz3dQQIV4tK
I also believe thence, perfectly indited post!
ReplyDeleteSalaudeen --
ReplyDeleteAny chance that this can be done with PowerShell (5.0)? There's a ton of content DBs and I'd like to script this to get all of the content DBs, and (probably) use a foreach loop to shrink them all.
I've gotten many great tips and tricks from your site in the past, and I'm hoping the answer to this question will be another one! Thanks for your help.
Hi,
Deletedid you get around this ? I am looking to do the same thing with my content DBs
I quickly put this together - if still needed;
Delete$path = "C:\scripts\white.csv"
$dbs = Get-Content -path $path
foreach ($n in $dbs)
{
$n
invoke-sqlcmd "USE $n" -ServerInstance sqlsrv400 -QueryTimeout 0
invoke-sqlcmd go -ServerInstance sqlsrv400
Invoke-Sqlcmd "DBCC SHRINKDATABASE(N'$n')" -ServerInstance sqlsrv400 -QueryTimeout 0
invoke-sqlcmd go -ServerInstance sqlsrv400 -QueryTimeout 0
}
Feel free to make it better!
Thanks, I'll give that a shot.
Delete