Procedure for maintenence

Posted by: cadarsh89

Tagged in: Untagged 

CREATE procedure maint
@dbname nvarchar(max),
@loc nvarchar(max)
as

set nocount on

declare @cmd1 nvarchar(max),@flag1 int
set @cmd1 = 'use '+@dbname+';'

exec @flag1= sp_executesql @cmd1

select @flag1

declare @flag int,@cmd nvarchar(max)

PRINT 'DBCC CHECKDB operation started for database '+@dbname+char(10)

set @cmd = 'dbcc checkdb('+@dbname+')'
exec @flag=dbo.sp_executesql @cmd

if (@flag=0)
PRINT 'DBCC CHECKDB operation finished for database '+@dbname+char(10)
else begin
PRINT 'DBCC CHECKDB operation FAILED for database '+@dbname+char(10)
GOTO FAIL
end
PRINT 'Shrinking of database '+@dbname+' started'+char(10)

set @cmd = 'dbcc shrinkdatabase ('+''''+@dbname+''''+',40)'

exec @flag=dbo.sp_executesql @cmd

if (@flag=0)
PRINT 'DBCC SHRINK DATABASE operation finished for database '+@dbname+char(10)
else
begin PRINT 'DBCC SHRINK DATABASE operation FAILED for database '+@dbname+char(10)
GOTO FAIL
end


PRINT 'Shrinking of database '+@dbname+' Fininshed'+char(10)

declare @command nvarchar(max)
set @command = @loc+@dbname+'.bak'

set @cmd = 'BACKUP DATABASE '+@dbname+' to disk = '+''''+@command+''''+' with init'
exec @flag=dbo.sp_executesql @cmd

if (@flag=0)
PRINT char(10)+'Backup of database '+@dbname+' Fininshed'+char(10)
else begin
PRINT char(10)+'Backup FAILED for database'+@dbname+char(10)
FAIL: PRINT 'Daily maint for database '+@dbname+' FAILED'+char(10)
GOTO end1

end

PRINT 'Daily maint for database '+@dbname+' finished'+char(10)
end1:

set nocount off


--drop proc maint