Ενα "κακό" σενάριο είναι να αφήσουμε να γεμίσουν οι δίσκοι που περιέχουν τις βάσεις δεδομένων ή/και τα log του SQL. Σαν αποτέλεσμα έχουμε καταφέρει να κάνουμε τις βάσεις read only με τον πιο δύσκολο τρόπο και φυσικά διακινδυνεύουμε να υποστούμε τις αντιδράσεις του λειτουργικού συστήματος, αντιδράσεις οι οποίες, αν κρίνω από σχετικές ιστορίες, μπορεί να είναι έως και βάρβαρες.
Καλό θα ήταν λοιπόν να ελέγχουμε τον ελεύθερο χώρο των data και log δίσκων με κάποιο scheduled job, όπως επίσης και πριν από διαδικασίες οι οποίες γνωρίζουμε ότι απαιτούν χώρο σε data ή και log. Ο έλεγχος αυτός μπορεί να γίνει με χρήση της extended SP xp_fixeddrives. Εκτελώντας:
EXEC maste.dbo.xp_fixeddrives
έχω το παρακάτω αποτέλεσμα:
drive MB free
----- -----------
C 24653
H 52395
Z 28154
(3 row(s) affected)
Για κάπως λίγο πιο advanced χρήση μπορώ σε ένα scheduled job να εκτελώ σε τακτά χρονικά διαστήματα την παραπάνω SP και να γεμίζω ένα table με δομή
CREATE TABLE dbo.DiskSpace(
DSp_DriveLetter char(1),
DSp_FreeSpace decimal(12, 0),
DSp_Date datetime DEFAULT(getdate())
με την εντολή
INSERT (dbo.DiskSpace(DSp_DriveLetter, DSp_FreeSpace)
EXEC maste.dbo.xp_fixeddrives
Με τον τρόπο αυτό θα έχω και ένα ιστορικό του ρυθμού αύξησης των δεδομένων και του log προβλέποντας έτσι τη χρονική στιγμή που το υλικό της εγκατάστασης θα χρειασθεί αναβάθμιση. Επίσης το scheduled job μπορεί να έχει ένα "παράθυρο συναγερμού" και να ειδοποιεί με αποστoλή mail ή/και net send όταν ο ελεύθερος χώρος πέσει κάτω από πχ 1024 Mbytes.