Celebrate National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

how to delete a .bak file using a job in sqlserver

Posted on 2009-04-13
6
Medium Priority
?
918 Views
Last Modified: 2012-06-27
how to delete a .bak file using a job in sqlserver.let us assume the backup is in c:\software.i have to delete .bak file.can some one tell the command.i have to keep it in the job.
0
Comment
Question by:vijay11
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
6 Comments
 
LVL 57

Expert Comment

by:Raja Jegan R
ID: 24134350
You can either use xp_cmdshell command to delete your *.bak files from the specified path or if you are taking regular backups using maintenance plans, then you can specify the expiry set for the backup files so that age old files would be deleted automatically by the Maintenance plan itself.
0
 

Author Comment

by:vijay11
ID: 24134391
i want this in sqlserver 2000.let ud suppose the files are in c:\software and i have to delete files older than 20 hrs.can you please write the command
0
 
LVL 15

Expert Comment

by:rob_farley
ID: 24134544
Vijay,

Try using a maintenance plan, configuring the CleanUp History section of it. It's very easy to do.

Rob
0
Learn how to optimize MySQL for your business need

With the increasing importance of apps & networks in both business & personal interconnections, perfor. has become one of the key metrics of successful communication. This ebook is a hands-on business-case-driven guide to understanding MySQL query parameter tuning & database perf

 

Author Comment

by:vijay11
ID: 24134581
if we use maintainance plan(sql 2000).we can not delete backups untill the backup jobs are totally completed.i want a script using xp_cmdshell to delete back ups older than 20 hrs
0
 
LVL 15

Expert Comment

by:rob_farley
ID: 24134613
Is PowerShell okay? Otherwise, you'll need VBScript, which I'm less keen on these days.

dir c:\software\*.bak | where-object -filter {$_.LastWriteTime -lt (Get-Date).AddHours(-20)} | % {$_.Delete()}

Hope this helps,

Rob
0
 
LVL 31

Accepted Solution

by:
RiteshShah earned 1500 total points
ID: 24134615
well you can do it by date time calculation. I used to create backfile with specified structure.

like:

backupfilename=@DBName+'_'+CAST(DATEPART(hour,@CurDT) AS varchar(2))+'.'+CAST(DATEPART(minute,@CurDT) AS varchar(2))+'.0'+'.bak';

I used to run one job to delete one day old backup from specified path. The script I am using is below. you can modify it as per your need. I am deleting 24 hours old backup.




DECLARE @BackupFolder2DaysBack AS varchar(250); 
DECLARE @BackupFolder1DayBack AS varchar(250);
DECLARE @Path AS varchar(250);
DECLARE @CurDT AS datetime;
DECLARE @PrevDT AS datetime;
DECLARE @DBName AS varchar(250);
SET @Path = 'E:\BACKUP\';
SET @CurDT = DateAdd(Day,-1,getdate());
SET @PrevDT = DateAdd(Day,-2,getdate());
-- Loop through databases
DECLARE delExpDatabases CURSOR
FOR
 select name from master..sysdatabases where name not in ('tempdb','Northwind','pubs','model','test1','test2','ASPState') 
OPEN delExpDatabases
FETCH NEXT FROM delExpDatabases INTO @DBName
WHILE (@@FETCH_STATUS = 0)
BEGIN
 
 SET @BackupFolder2DaysBack = @Path + @DBName + '\' + CONVERT(varchar(10), @PrevDT, 110);
 SET @BackupFolder1DayBack = @Path + @DBName + '\' + CONVERT(varchar(10), @CurDT, 110); 
 DECLARE @cmdStr AS varchar(250);
 SET @cmdStr = 'rmdir /Q /S '+@BackupFolder2DaysBack
 --print @cmdStr
 EXEC master..xp_cmdshell @cmdStr, NO_OUTPUT
 SET @cmdStr = 'ERASE /Q /S '+@BackupFolder1DayBack+'\*.dif '+@BackupFolder1DayBack+'\*.trn' 
 --print @cmdStr
 EXEC master..xp_cmdshell @cmdStr, NO_OUTPUT
   FETCH NEXT FROM delExpDatabases INTO @DBName
END
CLOSE delExpDatabases
DEALLOCATE delExpDatabases

Open in new window

0

Featured Post

Efficient way to get backups off site to Azure

This user guide provides instructions on how to deploy and configure both a StoneFly Scale Out NAS Enterprise Cloud Drive virtual machine and Veeam Cloud Connect in the Microsoft Azure Cloud.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

The Delta outage: 650 cancelled flights, more than 1200 delayed flights, thousands of frustrated customers, tens of millions of dollars in damages – plus untold reputational damage to one of the world’s most trusted airlines. All due to a catastroph…
It is possible to export the data of a SQL Table in SSMS and generate INSERT statements. It's neatly tucked away in the generate scripts option of a database.
Viewers will learn how the fundamental information of how to create a table.
Viewers will learn how to use the SELECT statement in SQL to return specific rows and columns, with various degrees of sorting and limits in place.

730 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question