Friday, February 24, 2012

DB maintenance plan backups not removing old files

Hi,
Ok, need a little help here. Here's what I've done: have created a DB
maintenance plan for all my non-system DBs to backup the db's and transactio
n
logs.
- On the 'General' tab of maintenance plan I selected 'All user
databases'.
- On the 'Complete Backup' tab I selected (among other things):
'Use this directory: R:\SQLBackup'
'create a sub-directory for each database' and
'Remove files older than: 2 days'
However, while this creates individual folders under R:\SQLBackup for each
DB (ie R:\SQLBackup\db1, R:SQLBackup\db2, etc), files older than 2 days unde
r
these directories are not getting deleted.
When I create an individual DB backup plan (on 'General' tab select
individual DB)and point the backup directory path to the name of the DB
folder (ie R:\SQLBackup\db1) instead of the R:\SQLBackup root the older file
s
get removed.
Should the 'All user databases' method I've setup be removing old files? I
don't see why not. Thanks.Hi
With your maintenance plan, the backup could possibly be removed on day 3
depending on timings. When do they get removed?
Regards
--
Mike Epprecht, Microsoft SQL Server MVP
Zurich, Switzerland
IM: mike@.epprecht.net
MVP Program: http://www.microsoft.com/mvp
Blog: http://www.msmvps.com/epprecht/
"mb" <mb@.discussions.microsoft.com> wrote in message
news:7722448E-E02B-47A5-87E9-927E0ED28854@.microsoft.com...
> Hi,
> Ok, need a little help here. Here's what I've done: have created a DB
> maintenance plan for all my non-system DBs to backup the db's and
> transaction
> logs.
> - On the 'General' tab of maintenance plan I selected 'All user
> databases'.
> - On the 'Complete Backup' tab I selected (among other things):
> 'Use this directory: R:\SQLBackup'
> 'create a sub-directory for each database' and
> 'Remove files older than: 2 days'
> However, while this creates individual folders under R:\SQLBackup for each
> DB (ie R:\SQLBackup\db1, R:SQLBackup\db2, etc), files older than 2 days
> under
> these directories are not getting deleted.
> When I create an individual DB backup plan (on 'General' tab select
> individual DB)and point the backup directory path to the name of the DB
> folder (ie R:\SQLBackup\db1) instead of the R:\SQLBackup root the older
> files
> get removed.
> Should the 'All user databases' method I've setup be removing old files?
> I
> don't see why not. Thanks.
>|||Below KB might help:
http://support.microsoft.com/defaul...2&Product=sql2k
Also, check out below great troubleshooting suggestions from Bill H at MS:
-- Log files don't delete --
This is likely to be either a permissions problem or a sharing violation
problem. The maintenance plan is run as a job, and jobs are run by the
SQLServerAgent service.
Permissions:
1. Determine the startup account for the SQLServerAgent service
(Start|Programs|Administrative tools|Services|SQLServerAgent|Startup). This
account is the security context for jobs, and thus the maintenance plan.
2. If SQLServerAgent is started using LocalSystem (as opposed to a domain
account) then skip step 3.
3. On that box, log onto NT as that account. Using Explorer, attempt to
delete an expired backup. If that succeeds then go to Sharing Violation
section.
4. Log onto NT with an account that is an administrator and use Explorer to
look at the Properties|Security of the folder (where the backups reside)
and ensure the SQLServerAgent startup account has Full Control. If the
SQLServerAgent startup account is LocalSystem, then the account to consider
is SYSTEM.
5. In NT, if an account is a member of an NT group, and if that group has
Access is Denied, then that account will have Access is Denied, even if
that account is also a member of the Administrators group. Thus you may
need to check group permissions (if the Startup Account is a member of a
group).
6. Keep in mind that permissions (by default) are inherited from a parent
folder. Thus, if the backups are stored in C:\bak, and if someone had
denied permission to the SQLServerAgent startup account for C:\, then
C:\bak will inherit access is denied.
Sharing violation:
This is likely to be rooted in a timing issue, with the most likely cause
being another scheduled process (such as NT Backup or Anti-Virus software)
having the backup file open at the time when the SQLServerAgent (i.e., the
maintenance plan job) tried to delete it.
1. Download filemon and handle from www.sysinternals.com.
2. I am not sure whether filemon can be scheduled, or you might be able to
use NT scheduling services to start filemon just before the maintenance
plan job is started, but the filemon log can become very large, so it would
be best to start it some short time before the maintenance plan starts.
3. Inspect the filemon log for another process that has that backup file
open (if your lucky enough to have started filemon before this other
process grabs the backup folder), and inspect the log for the results when
the SQLServerAgent agent attempts to open that same file.
4. Schedule the job or that other process to do their work at different
times.
5. You can use the handle utility if you are around at the time when the
job is scheduled to run.
If the backup files are going to a \\share or a mapped drive (as opposed to
local drive), then you will need to modify the above (with respect to where
the tests and utilities are run).
Finally, inspection of the maintenance plan's history report might be
useful.
Thanks,
Bill Hollinshead
Microsoft, SQL Server
Tibor Karaszi, SQL Server MVP
http://www.karaszi.com/sqlserver/default.asp
http://www.solidqualitylearning.com/
Blog: http://solidqualitylearning.com/blogs/tibor/
"mb" <mb@.discussions.microsoft.com> wrote in message
news:7722448E-E02B-47A5-87E9-927E0ED28854@.microsoft.com...
> Hi,
> Ok, need a little help here. Here's what I've done: have created a DB
> maintenance plan for all my non-system DBs to backup the db's and transact
ion
> logs.
> - On the 'General' tab of maintenance plan I selected 'All user
> databases'.
> - On the 'Complete Backup' tab I selected (among other things):
> 'Use this directory: R:\SQLBackup'
> 'create a sub-directory for each database' and
> 'Remove files older than: 2 days'
> However, while this creates individual folders under R:\SQLBackup for each
> DB (ie R:\SQLBackup\db1, R:SQLBackup\db2, etc), files older than 2 days un
der
> these directories are not getting deleted.
> When I create an individual DB backup plan (on 'General' tab select
> individual DB)and point the backup directory path to the name of the DB
> folder (ie R:\SQLBackup\db1) instead of the R:\SQLBackup root the older fi
les
> get removed.
> Should the 'All user databases' method I've setup be removing old files?
I
> don't see why not. Thanks.
>|||That's the problem - they're not getting removed at all with this plan.
"Mike Epprecht (SQL MVP)" wrote:

> Hi
> With your maintenance plan, the backup could possibly be removed on day 3
> depending on timings. When do they get removed?
> Regards
> --
> Mike Epprecht, Microsoft SQL Server MVP
> Zurich, Switzerland
> IM: mike@.epprecht.net
> MVP Program: http://www.microsoft.com/mvp
> Blog: http://www.msmvps.com/epprecht/
> "mb" <mb@.discussions.microsoft.com> wrote in message
> news:7722448E-E02B-47A5-87E9-927E0ED28854@.microsoft.com...
>
>|||Thanks for the KB article. Don't think that's the problem as I'm not gettin
g
any errors in the backup logs and none of my DBs have a recovery model of
simple.
Looked at the troubleshooting tips and the permission that the
SQLServerAgent account can delete files from the backup directory.
Not a matter of file locking as no backup or AV software runs against these
files..
"Tibor Karaszi" wrote:

> Below KB might help:
> [url]http://support.microsoft.com/default.aspx?scid=kb;en-us;303292&Product=sql2k[/ur
l]
>

No comments:

Post a Comment