Designing Custom Maintenance Plans with TSQL By John Miner.

24
Designing Custom Maintenance Plans with TSQL By John Miner

Transcript of Designing Custom Maintenance Plans with TSQL By John Miner.

Page 1: Designing Custom Maintenance Plans with TSQL By John Miner.

Designing Custom Maintenance Plans with TSQL

By John Miner

Page 2: Designing Custom Maintenance Plans with TSQL By John Miner.

Why implement plans?

• Prevent loss of data. – Hardware failure– Unintentional software action– Database corruption

• Provide good server performance to users.– Ordered Indexes– Up-to-date statistics

Surprising how many systems do not have these plans in place correctly.

Page 3: Designing Custom Maintenance Plans with TSQL By John Miner.

What’s not covered!

• Maintenance Plan Wizard – a wizard that steps the user through the process of setting up basic plans with limited options.

• Maintenance Plan Designer – a drag-and-drop GUI interface in SSMS that facilitates the design and creation of somewhat more customizable plans.

• Powershell – extremely advanced scripting performing tasks against more than one database at a time.

Page 4: Designing Custom Maintenance Plans with TSQL By John Miner.

Core Maintenance Plan Tasks

This presentation will review how to build a custom maintenance plans from the ground up using TSQL commands.

1. Verify integrity of databases.2. Backup databases (full versus differential).3. Backup logs4. Maintain database indexes.5. Maintain index/column statistics.6. Remove older data from [msdb].7. Remove older backups from file system.

Page 5: Designing Custom Maintenance Plans with TSQL By John Miner.

Before Creating Plans

• Database Mail has to be setup to send notifications.

• At least on Operator needs to be configured to receive the messages.

• Active Directory distribution lists should assigned to the Operator.

Page 6: Designing Custom Maintenance Plans with TSQL By John Miner.

Check Database Integrity

• Database corruption might not show up right away and sometimes require full restore from old backup to fix.

• Use DBCC CHECKDB (‘db name’) for small databases.

• Adding the NOINDEX option for larger databases to reduce time by not checking non-clustered indexes.

• Considering executing as off-line operation due to intense resource usage.

With modern hard disk systems, this task is largely overlooked.

Page 7: Designing Custom Maintenance Plans with TSQL By John Miner.

Recovery Models

• Simple Recovery – transaction log is automatically truncated during periodic checkpoints and can’t be used for recovery.

• Full Recovery – transaction log is not automatically truncated during periodic checkpoints and can be used for recovery.

• Bulk-Logged Recovery - Same as Full Recovery except for bulk operations are minimally logged saving significantly on processing time, but preventing point-in-time restore options.

Page 8: Designing Custom Maintenance Plans with TSQL By John Miner.

Full Backup – TSQL Example

BACKUP DATABASE @VAR_NAME TO DISK = @VAR_FILE WITH

FORMAT, INIT, NAME = @VAR_DESC, SKIP, NOREWIND, NOUNLOAD, STATS = 10;

Page 9: Designing Custom Maintenance Plans with TSQL By John Miner.

Full Backup Described

• Provides a full copy of the data so that it can be used to restore a database after a given event.

• The database name, backup file name, and a description must be supplied.

• Using the FORMAT and INIT options, any previous backups are over-written.

• The NOFORMAT and NOINIT options allow for appending data.

Do not append data since backup files can become quite large.

Page 10: Designing Custom Maintenance Plans with TSQL By John Miner.

Differential Backup – TSQL Example

BACKUP DATABASE @VAR_NAME TO DISK = @VAR_FILE WITH DIFFERENTIAL,

FORMAT, INIT, NAME = @VAR_DESC, SKIP, NOREWIND, NOUNLOAD, STATS = 10;

Page 11: Designing Custom Maintenance Plans with TSQL By John Miner.

Differential Backup Described

• Provides a copy of the data changes since the last full backup.

• The database name, backup file name, and a description must be supplied.

• Using the FORMAT and INIT options, any previous backups are over-written.

• The NOFORMAT and NOINIT options allow for appending data.

Must use recent full backup, recent differential backup, and all transaction logs to restore to a given point-in-time.

Page 12: Designing Custom Maintenance Plans with TSQL By John Miner.

Log Backup – TSQL Example

BACKUP LOG @VAR_NAME TO DISK = @VAR_FILE WITH

NOFORMAT, NOINIT, NAME = @VAR_DESC, SKIP, NOREWIND, NOUNLOAD, STATS = 10;

Page 13: Designing Custom Maintenance Plans with TSQL By John Miner.

Log Backup Described

• Provides a copy of the data changes recorded in the log file.

• The log file is truncated after this action. Log files can grow uncontrollably if not done.

• Appending log backups in the same file allows for easier restoring. Do this if the database size is small.

Chose a periodic daily execution time that balances business needs versus acceptable data loss (15, 30 or 60 minutes).

Page 14: Designing Custom Maintenance Plans with TSQL By John Miner.

Maintain Indexes• REBUILD versus REORGANIZE options of ALTER

INDEX command. • Both commands reduce the amount of

fragmentation in Indexes which increases database performance.

• REBUILD is a very server intensive command but is quick. Only perform during off-line hours.

• REORGANIZE can be performed during on-line hours but is slower.

• One must run the UPDATE STATISTICS command on the object after a REORGANIZE operation.

Page 15: Designing Custom Maintenance Plans with TSQL By John Miner.

Maintain Statistics

• The ‘sp_updatestats’ stored procedure can be executed in the current database.

• Updates only the statistics that require updating based on the rowmodctr information in the sys.sysindexes catalog view.

• Can cause stored code to be recompiled.

• Gives Query plan optimizer better information to work with.

Page 16: Designing Custom Maintenance Plans with TSQL By John Miner.

Remove data from [msdb]

• The stored procedures below are used to clear [msdb] data by oldest date pertaining to backup sets, job history, and maintenance plans.

‘msdb.dbo.sp_delete_backuphistory’‘msdb.dbo.sp_purge_jobhistory’‘msdb.dbo.sp_maintplan_delete_log’

• While this is not necessary, having two year old information is sometimes useless.

Page 17: Designing Custom Maintenance Plans with TSQL By John Miner.

Remove older backups

• The undocumented ‘master.dbo.xp_delete_file’ stored procedure can be used.

• Deletes backup (*.bak), transaction (*.trn) and report files (*.txt).

• Physically examines the contents of the file before deleting.

• Must specify last file date to keep on disk.

Page 18: Designing Custom Maintenance Plans with TSQL By John Miner.

Tape Rotation (GFS)

• The Grand-Father-Son approach uses three levels of tape rotation.

• Level 1 - daily backups• Level 2 - weekly backups • Level 3 - monthly backups

Page 19: Designing Custom Maintenance Plans with TSQL By John Miner.

Tape Rotation (TOH)• The Tower of Hanoi approach uses five

levels of tape rotation.

• Level A every 2 days; Level B every 4 days

• Level C every 8 days; Level D every 16 days

• Level E every 32 days

Page 20: Designing Custom Maintenance Plans with TSQL By John Miner.

Best Practices (Daily)

• Full or Differential backups at the start of the day.

• Transactional Log backups every hour.• Copy backups from database server to

archive server.• Swipe backups from archive server to

tape daily.• Rotate tapes daily using either the GFS

or Tower of Hanoi schemes.• Store tapes off site.

Page 21: Designing Custom Maintenance Plans with TSQL By John Miner.

Best Practices (Weekly)

• Verify the integrity of each database.• Remove old data from [msdb].• Remove old backups from server.• Rebuild or Reorganize Indexes *• Update statistics on changed tables *• Perform full backups on large databases.

Use daily scheme to secure backup.

* - Move to daily if time permits in over night schedule.

Page 22: Designing Custom Maintenance Plans with TSQL By John Miner.

Best Practices (Monthly)

• Send full tape backup of databases to parent site.

• Restore backup from tape to test validity.

Page 23: Designing Custom Maintenance Plans with TSQL By John Miner.

Biography• Has twenty years of data processing and proven

project management experience, specializing in the banking, health care, and government areas.

• His credentials include a Masters degree in Computer Science from the University of Rhode Island; and Microsoft Certificates (MCDBA & MCSA).

• John is currently a Developing DBA at Sensata working with SQL Server 2008 silo of products.

• When he is not busy working, he spends time with his wife, daughter and dog enjoying outdoor activities

Page 24: Designing Custom Maintenance Plans with TSQL By John Miner.

Questions & Answers

• References– “Brad's Sure Guide to SQL Server

Maintenance Plans”, Brad McGehee, Simple Talk Publishing

– "Best Practices for Backup and Restore in SQL Server 2005", Javier Loria, Penton Media Inc.

– SQL Server Books Online - http://msdn.microsoft.com/en-us/library/ms130214.aspx

• Please ask about the presentation.

• If you have any questions, you can contact me at [email protected]