Παρτίδα δέσμης για να κάνετε τη συντήρηση της βάσης δεδομένων του SQL Server απλή
Εκτός από τη δημιουργία αντιγράφων ασφαλείας, υπάρχουν διάφορες λειτουργίες και λειτουργίες που παρέχει ο SQL Server, οι οποίες μπορούν να βελτιώσουν την απόδοση και την αξιοπιστία των βάσεων δεδομένων σας. Σας έχουμε δείξει προηγουμένως πώς μπορείτε να δημιουργήσετε αντίγραφα ασφαλείας των βάσεων δεδομένων του SQL Server με ένα απλό script γραμμής εντολών έτσι με τον ίδιο τρόπο που παρέχουμε ένα σενάριο που θα σας επιτρέψει να εκτελείτε εύκολα κοινές εργασίες συντήρησης.
Συμπίεση / συρρίκνωση μιας βάσης δεδομένων [/ Compact]
Υπάρχουν διάφοροι παράγοντες που συμβάλλουν στο χώρο του φυσικού δίσκου που χρησιμοποιεί μια βάση δεδομένων του SQL Server. Ακριβώς για να αναφέρουμε μερικά:
- Με την πάροδο του χρόνου, καθώς οι εγγραφές προστίθενται, διαγράφονται και ενημερώνονται, η SQL αναπτύσσεται συνεχώς και συρρικνώνεται πίνακες καθώς και δημιουργεί προσωρινές δομές δεδομένων για την εκτέλεση επεμβάσεων επερώτησης. Για να ικανοποιήσει τις ανάγκες αποθήκευσης δίσκου, ο SQL Server θα αυξήσει το μέγεθος της βάσης δεδομένων (συνήθως κατά 10%) όπως απαιτείται, έτσι ώστε το μέγεθος του αρχείου βάσης δεδομένων να μην αλλάζει διαρκώς. Ενώ αυτό είναι ιδανικό για απόδοση, μπορεί να προκαλέσει αποσύνδεση από τον αποθηκευτικό χώρο που χρησιμοποιείται, διότι, για παράδειγμα, προσθέτετε έναν πολύ μεγάλο αριθμό εγγραφών που προκαλούν την ανάπτυξη της βάσης δεδομένων και στη συνέχεια να διαγράψετε αυτές τις εγγραφές, ο SQL Server δεν θα απαιτήσει αυτόματα χώρος στο δισκο.
- Εάν χρησιμοποιείτε τη λειτουργία πλήρους αποκατάστασης στις βάσεις δεδομένων σας, το αρχείο καταγραφής συναλλαγών (LDF) μπορεί να αυξηθεί αρκετά, ειδικά σε βάσεις δεδομένων με μεγάλο όγκο ενημερώσεων.
Η συμπύκνωση (ή η συρρίκνωση) της βάσης δεδομένων θα επαναφέρει τον μη χρησιμοποιημένο χώρο στο δίσκο. Για μικρές βάσεις δεδομένων (200 MB ή λιγότερο) αυτό συνήθως δεν θα είναι πάρα πολύ, αλλά για μεγάλες βάσεις δεδομένων (1 GB ή και περισσότερο) ο χώρος που μπορεί να ανακτηθεί μπορεί να είναι σημαντικός.
Επανάληψη μιας βάσης δεδομένων [/ Reindex]
Όπως η συνεχής δημιουργία, η επεξεργασία και η διαγραφή αρχείων μπορούν να οδηγήσουν σε κατακερματισμό του δίσκου, η εισαγωγή, η ενημέρωση και η διαγραφή αρχείων σε μια βάση δεδομένων μπορεί να οδηγήσει σε κατακερματισμό του πίνακα. Τα πρακτικά αποτελέσματα είναι τα ίδια, καθώς οι λειτουργίες ανάγνωσης και εγγραφής υποφέρουν από επιτυχία. Παρόλο που δεν είναι μια τέλεια αναλογία, reindexing τους πίνακες σε μια βάση δεδομένων ουσιαστικά τους αποκρυπτογραφεί. Σε ορισμένες περιπτώσεις, αυτό μπορεί να αυξήσει σημαντικά την ταχύτητα ανάκτησης δεδομένων.
Λόγω του τρόπου με τον οποίο λειτουργεί ο SQL Server, οι πίνακες πρέπει να επανεξετάζονται ξεχωριστά. Για βάσεις δεδομένων με μεγάλο αριθμό πινάκων, αυτό μπορεί να είναι πραγματικός πόνος για χειροκίνητο χειρισμό, αλλά το σενάριό μας χτυπά κάθε πίνακα στην αντίστοιχη βάση δεδομένων και ξαναχτίζει όλους τους δείκτες.
Επαλήθευση ακεραιότητας [/ Επαλήθευση]
Προκειμένου η βάση δεδομένων να παραμείνει λειτουργική και να παράγει ακριβή αποτελέσματα, υπάρχουν πολλά στοιχεία ακεραιότητας που πρέπει να υπάρχουν. Ευτυχώς, τα προβλήματα φυσικής ή / και λογικής ακεραιότητας δεν είναι πολύ συνηθισμένα, αλλά είναι καλή πρακτική να τρέχετε περιστασιακά τη διαδικασία επαλήθευσης της ακεραιότητας στις βάσεις δεδομένων σας και να εξετάσετε τα αποτελέσματα.
Όταν η διαδικασία επαλήθευσης εκτελείται μέσω του σεναρίου μας, μόνο σφάλματα αναφέρονται, οπότε καμία είδηση δεν είναι καλή είδηση.
Χρησιμοποιώντας το Script
Το δέσμη ενεργειών SQLMaint είναι συμβατό με SQL 2005 και νεότερη έκδοση και πρέπει να εκτελείται σε ένα μηχάνημα στο οποίο έχει εγκατασταθεί το εργαλείο SQLCMD (εγκατεστημένο ως μέρος της εγκατάστασης του SQL Server). Συνιστάται να αφήσετε αυτό το σενάριο σε μια θέση που έχει οριστεί στη μεταβλητή PATH των Windows (δηλ. C: Windows), ώστε να μπορεί εύκολα να καλείται όπως οποιαδήποτε άλλη εφαρμογή από τη γραμμή εντολών.
Για να δείτε τις πληροφορίες βοήθειας, απλά πληκτρολογήστε:
SQLMaint /?
Παραδείγματα
Για να εκτελέσετε ένα συμπαγές και στη συνέχεια να επαληθεύσετε τη βάση δεδομένων "MyDB" χρησιμοποιώντας μια αξιόπιστη σύνδεση:
SQLMaint MyDB / Compact / Επαλήθευση
Για να εκτελέσετε ένα reindex και στη συνέχεια να συμπιέσετε το "MyDB" στην ονοματοποιημένη παράσταση "Special" χρησιμοποιώντας τον χρήστη "sa" με τον κωδικό "123456":
SQLMaint MyDB /S:.Special / U: sa / P: 123456 / Reindex / Compact
Χρήση από το εσωτερικό ενός δέσμης ενεργειών δέσμης ενεργειών
Ενώ το σενάριο δέσμης εντολών SQLMaint μπορεί να χρησιμοποιηθεί σαν μια εφαρμογή από τη γραμμή εντολών, όταν το χρησιμοποιείτε μέσα σε ένα άλλο σενάριο δέσμης, πρέπει να προηγείται η λέξη-κλειδί CALL.
Για παράδειγμα, αυτή η δέσμη ενεργειών εκτελεί όλες τις εργασίες συντήρησης σε κάθε βάση δεδομένων μη συστήματος σε μια προεπιλεγμένη εγκατάσταση του SQL Server χρησιμοποιώντας αξιόπιστο έλεγχο ταυτότητας:
@ OFF OFF
SETLOCAL EnableExtensions
SET DBList = "% TEMP% DBList.txt"
SqlCmd -E -h-1 -w 300-Q "SET NoCount ON; SELECT Όνομα FROM master.dbo.sysΒαθμολογίες WHERE Όνομα Δεν είναι IN ('master', 'model', 'msdb', 'tempdb') ">% DBList%
FOR / F "usebackq tokens = 1" %% i IN (% DBList%) DO (
CALL SQLMaint "%% i" / Compact / Reindex / Επαλήθευση
ΗΧΩ +++++++++++
)
ΕΑΝ ΥΠΑΡΧΕΙ% DBList% DEL / F / Q% DBList%
ENDLOCAL
Κάντε λήψη του δέσμης ενεργειών SQLMaint από το SysadminGeek.com