Σαν DBA θέλεις να έχεις τα πάντα σε έλεγχο και για αυτό πρέπει αρκετές φορές να κάνεις κάποια πράγματα πριν οι καταστάσεις ξεφύγουν από τον έλεγχο σου.
Από τα πρώτα πράγματα που πρέπει ένας DBA να κάνει είναι έχει μια σωστή στρατηγική για τα backup του, ιδιαίτερα όταν έχεις μεγάλο αριθμό από databases.
Φυσικά θα πρέπει να είναι σε θέση ανά πάσα ώρα να γνωρίζει τι έχει στα χέρια του από backups ώστε όταν έρθει η στιγμή που θα τα χρειαστεί να μην ψάχνει δεξιά και αριστερά.
Αυτό είναι ακόμα επιτακτικότερο όταν τα SQL backups γίνονται με κάποιο άλλο εργαλείο ή σουίτα που δεν είναι κάτω από τον άμεσο έλεγχο του.
Για τους παραπάνω λόγους και κυρίως από προσωπική ανάγκη έφτιαξα κάποια reports τα οποία είναι διαθέσιμα για download και τα οποία μπορείτε αφού τα βάλε σε ένα directory να τα ενσωματώσετε στο SSMS σαν Custom Reports ακολουθώντας τις παρακάτω οδηγίες
Οδηγίες εγκατάστασης
- Ανοίγουμε τον SSMS
- Επιλέγουμε το instance με στο οποίο θέλουμε
- Στον Object explorer κάνουμε expand το server και δεξί κλικ στις Databases και στο popup menu επιλέγουμε Reports > Custom Reports
- Στο παράθυρο που θα μας εμφανιστεί επιλέγουμε το directory στο οποίο έχουμε βάλει τα report και επιλέγουμε το All Databases Backup History Report of last 6 weeks.rdl
Για να εγκαταστήσουμε το Database Backup History Report of last 6 weeks.rdl ακολουθούμε την ίδια διαδικασία αλλά αυτή την φορά επιλέγουμε την βάση που μας ενδιαφέρει.
Τα reports
Και τα δύο αυτά reports βασίζονται στο παρακάτω query που δεν κάνει τίποτα περισσότερο από το να ρωτάει τους πίνακες dbo.backupset και dbo.backupmediafamily που υπάρχουν στην msdb και που περιέχουν πληροφορίες για τα backups που έχουν παρθεί τις τελευταίες 6 εβδομάδες για κάθε βάση.
Το query
Αν κάποιος θέλει απλά να χρησιμοποιήσει το query μπορεί να το κάνει αλλά πιστεύω ότι τα reports είναι αρκετά χρήσιμα καθώς με ένα κλικ μπορείς να δεις τα αποτελέσματα.
SELECT
-- database info
bs.[database_name] AS database_name
, bs.[recovery_model] AS database_recovery_model
, bs.[compatibility_level] AS database_compatibility_level
-- backup device info
, CASE bs.[type]
WHEN 'D' THEN 'FULL'
WHEN 'I' THEN 'DIFFERENTIAL'
WHEN 'L' THEN 'LOG'
WHEN 'F' THEN 'FILE / FILEGROUP'
WHEN 'G' THEN 'DIFFERENTAIL FILE'
WHEN 'P' THEN 'PARTIAL'
WHEN 'Q' THEN 'DIFFERENTIAL PARTIAL'
END AS backup_type
, bs.[backup_finish_date] AS backup_finish_date
, mf.[physical_device_name] AS physical_device_name
, bs.[user_name] AS backup_operator_username
, bs.[position] AS position_in_device
-- backup details
, CAST(ROUND(bs.[backup_size] * 1.0 / ( 1024 * 1024 ), 2) AS decimal(10, 2)) as size_in_mb
, CAST(ROUND(bs.[compressed_backup_size] * 1.0 / ( 1024 * 1024 ), 2) AS decimal(10, 2)) AS compressed_size_in_mb
, DATEDIFF(minute, bs.[backup_start_date], bs.[backup_finish_date]) AS backup_duration_min
, bs.[is_copy_only] AS is_copy_only
, bs.[is_force_offline] AS with_norecovery_option
, bs.[is_password_protected] AS is_password_protected
, bs.expiration_date AS backup_expiration_date
FROM msdb.dbo.backupset AS bs
INNER JOIN msdb.dbo.backupmediafamily AS mf ON bs.[media_set_id] = mf.[media_set_id]
WHERE bs.[backup_finish_date] > DATEADD(WEEK, -6, GETDATE()) -- get last 6 weeks
AND bs.database_name = DB_NAME()
ORDER BY backup_finish_date DESC
Πως δημιουργήθηκαν τα reports
Μπορείτε να φτιάξετε και τα δικά σας report και να τα ενσωματώσετε στο SSMS. Δεν είναι δύσκολο, το μόνο που χρειάζεται είναι να έχετε λίγες γνώσεις από Reporting Services. Απλά θα πρέπει στο τέλος στο data source να βάλετε σαν (local) ή τελεία (.) στο όνομα του instance ώστε να μπορείτε να τα χρησιμοποιείται σε όποιο instance θέλετε.
/*antonch*/