SET NOCOUNT ON;
DECLARE @DBNAME SYSNAME, @LogFileName
sysname
DECLARE
@InitialSize INT
DECLARE
@ExistingSize int
SET @DBNAME = 'DB-ODS-CLIENTNAME'
SELECT TOP 1 @InitialSize = (size*8)/1024, @LogFileName = NAME
FROM sys.master_files
WHERE
DB_NAME(database_id) = @DBNAME AND TYPE = 1;
SELECT
@InitialSize
SELECT
@ExistingSize =
SUM(CASE WHEN counter_name = 'Log File(s) Size (KB)' THEN
cntr_value/1024 END)
FROM
sys.dm_os_performance_counters
WHERE
counter_name IN ('Data File(s) Size (KB)',
'Log File(s) Size (KB)')
AND
instance_name <> '_Total'
AND instance_name =
@DBNAME
GROUP BY
instance_name;
SELECT
@ExistingSize
IF
@ExistingSize < @InitialSize
BEGIN
PRINT 'Do the Truncation here'
DECLARE @folderName VARCHAR(1000)
select top 1 @folderName= LEFT(a.physical_device_name,
LEN(a.physical_device_name)
- CHARINDEX('\', REVERSE(a.physical_device_name)))
from msdb.dbo.backupmediafamily
a
join msdb.dbo.backupset b
on (a.media_set_id=b.media_set_id)
where database_name= @DBNAME and b.type='L';
DECLARE @folderNameFull varchar(1000)
select top 1 @folderNameFull= LEFT(a.physical_device_name,
LEN(a.physical_device_name)
- CHARINDEX('\', REVERSE(a.physical_device_name)))
from msdb.dbo.backupmediafamily
a
join msdb.dbo.backupset b
on (a.media_set_id=b.media_set_id)
where database_name= @DBNAME and b.type='D';
-- Get Date To Join in the FileName
DECLARE @date VARCHAR(20)
SELECT @date = replace(replace(replace(LEFT(CONVERT(VARCHAR, GETDATE(), 120), 20),'-',''),' ',''),':','')
select @folderName
SELECT @date
select @DBNAME
SELECT @folderName = @folderName + '\' + @DBNAME + @date + '.trn'
SELECT @folderNameFull = @folderNameFull + '\' + @DBNAME + @date + '.bak'
SELECT @folderName;
declare @sql varchar(max)
set @sql ='
USE [master];
BACKUP DATABASE [' + @DBNAME +'] TO DISK = ''' +
@folderNameFull +''' WITH INIT,COMPRESSION, STATS = 10;
BACKUP LOG [' + @DBNAME +'] TO DISK = ''' +
@folderName+''' WITH INIT,COMPRESSION, STATS = 10;
ALTER DATABASE [' + @DBNAME +'] SET RECOVERY SIMPLE WITH NO_WAIT;
USE [' +@DBNAME
+'];
DBCC SHRINKFILE ([' +@LogFileName+'] , 0)
USE [master];
ALTER DATABASE [' + @DBNAME +'] SET RECOVERY FULL
WITH NO_WAIT;
'
Print @sql
Exec (@SQL)
END
ELSE
BEGIN
PRINT ' No Truncation Required'
END
SET NOCOUNT OFF;