Exec usp_ShrinkDBLogs 'UserDBName' for a single database, or
Exec usp_ShrinkDBLogs for all user databases on the server.
Exec usp_ShrinkDBLogs 'UserDBName' for a single database, or
Exec usp_ShrinkDBLogs for all user databases on the server.
USE MASTER
GO
If exists (Select Name From Sysobjects Where Name = 'usp_ShrinkDBLogs' And Type = 'P')
Drop Proc usp_ShrinkDBLogs
GO
Create Procedure usp_ShrinkDBLogs(@DBName nVarChar(75) = N'')
AS
/***********************************************************************************************
* Procedure: usp_ShrinkDBLogs
* Parameter: @DBName input, optional, nVarChar(75)
* Purpose : Truncate Logs on one or all user databases.
* Author : Brandon Forest
* Created : 10/6/2008
***********************************************************************************************/IF @DBName = N''
BEGIN
Declare @SQLCmd nVarChar(200)
Declare curD Cursor For
Select Name From Sys.Databases Where Name Not In ('master', 'tempdb', 'model', 'msdb')
Open curD
Fetch Next From curD Into @DBName
While @@Fetch_Status = 0
Begin
BEGIN TRY
Set @SQLCmd = N'Backup Log @DatabaseName With Truncate_Only'
Print @SQLCMD
Exec sp_ExecuteSQL @SQLCmd, N'@DatabaseName nVarchar(75)', @DatabaseName = @DBName
END TRY
BEGIN CATCH
RETURN(@@ERROR)
END CATCH
BEGIN TRY
Set @SQLCmd = N'DBCC SHRINKDATABASE(@DatabaseName,10)'
Print @SQLCMD
Exec sp_ExecuteSQL @SQLCmd, N'@DatabaseName nVarchar(75)', @DatabaseName = @DBName
END TRY
BEGIN CATCH
RETURN(@@ERROR)
END CATCH
Fetch Next From curD Into @DBName
End
Close curD
Deallocate curD
END
ELSE
BEGIN
Backup Log @DBName With Truncate_Only
DBCC SHRINKDATABASE(@DBName,10)
END
GO