Αυτήν τη στιγμή είστε εκτός σύνδεσης, σε αναμονή για επανασύνδεση στο Internet

Τρόπος για να συμπτύξετε τη βάση δεδομένων tempdb στον SQL Server

ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο έχει μεταφραστεί χρησιμοποιώντας λογισμικό μηχανικής μετάφρασης της Microsoft και μπορείτε να το διορθώσετε χρησιμοποιώντας την τεχνολογία Community Translation Framework (CTF) (Πλαίσιο μετάφρασης κοινότητας). Η Microsoft παρέχει μηχανική μετάφραση, επεξεργασία μετά τη μηχανική μετάφραση από την κοινότητα και άρθρα μεταφρασμένα από επαγγελματίες προκειμένου να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής βάσης σε πολλές γλώσσες. Τα άρθρα μηχανικής μετάφρασης και αυτά που επεξεργάζονται ύστερα από μηχανική μετάφραση ενδέχεται να περιέχουν σφάλματα στο λεξιλόγιο, στη σύνταξη ή/και στη γραμματική. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες μας. Για περισσότερες πληροφορίες σχετικά με το CTF, μεταβείτε στην τοποθεσία http://support.microsoft.com/gp/machine-translation-corrections/el.

Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη: 307487
Ενημέρωση
Εάν είστε πελάτης μικρών επιχειρήσεων, μπορείτε να βρείτε πρόσθετη αντιμετώπιση προβλημάτων και εκμάθηση πόρων με το Υποστήριξη για μικρές επιχειρήσεις.
Περίληψη
Αυτό το άρθρο περιγράφει τρεις μεθόδους που μπορείτε να χρησιμοποιήσετε για να συμπτύξετε τη βάση δεδομένων tempdb σε μέγεθος που είναι μικρότερη από την τελευταία μέγεθος έχει ρυθμιστεί. Η πρώτη μέθοδος παρέχει πλήρη έλεγχο του μεγέθους των αρχείων tempdb . Ωστόσο, η πρώτη μέθοδος απαιτεί να κάνετε επανεκκίνηση του Microsoft SQL Server. Η δεύτερη μέθοδος μικραίνει η βάση δεδομένων tempdb και ίσως χρειαστεί να κάνετε επανεκκίνηση του SQL Server. Η τρίτη μέθοδος σας επιτρέπει να συρρικνώσετε μεμονωμένα αρχεία στη βάση δεδομένων tempdb . Οι δύο τελευταίες μέθοδοι απαιτούν ότι καμία δραστηριότητα μπορεί να εμφανιστεί στη βάση δεδομένων tempdb κατά τη λειτουργία συρρίκνωσης.

Σημείωση Εάν χρησιμοποιείτε SQL Server 2005, οι μέθοδοι αυτές ισχύουν επίσης. Ωστόσο, θα πρέπει να χρησιμοποιείτε SQL Server Management Studio αντί Enterprise Manager και Query Analyzer για να εκτελέσετε αυτές τις λειτουργίες. Επίσης πρέπει να γνωρίζετε ότι ο SQL Server Management Studio στον SQL Server 2005 δεν εμφανίζει το σωστό μέγεθος αρχείων tempdb μετά από μια λειτουργία συρρίκνωσης. Η τιμή "Αυτήν τη στιγμή, εκχωρείται χώρος" πάντα λαμβάνονται από sys.master_files DMV και αυτή η τιμή δεν ενημερώνονται μετά από μια λειτουργία συρρίκνωσης για τη βάση δεδομένων tempdb . Για να βρείτε το σωστό μέγεθος αρχείων tempdb μετά από μια λειτουργία συρρίκνωσης, εκτελέστε την ακόλουθη δήλωση στο SQL Server Management Studio:
use tempdbselect (size*8) as FileSizeKB from sys.database_files

Σημείωση Στον SQL Server 2008 δεν επηρεάζεται από το ζήτημα ότι εμφανίζεται το εσφαλμένο μέγεθος των αρχείων tempdb μετά από μια λειτουργία συρρίκνωσης.

Πληροφορίες tempdb

Το tempdb είναι ένα προσωρινό χώρο εργασίας. Στις άλλες χρήσεις, ο SQL Server χρησιμοποιεί το tempdb για τα εξής:
  • Αποθήκευση προσωρινών πινάκων ρητά δημιουργήθηκε
  • Worktables που περιέχουν τα ενδιάμεσα αποτελέσματα που δημιουργούνται στη διάρκεια ερωτήματος επεξεργασίας και ταξινόμησης
  • Επελεύσεως στατικοί δρομείς
SQL Server καταγράφει μόνο τις πληροφορίες στο αρχείο καταγραφής συναλλαγών του tempdb για να επαναφέρετε μια συναλλαγή, αλλά όχι για επανάληψη συναλλαγές κατά την ανάκτηση της βάσης δεδομένων. Η δυνατότητα αυτή αυξάνει την απόδοση των δηλώσεις ΕΙΣΑΓΩΓΉΣ στο το tempdb. Επιπλέον, δεν χρειάζεται να καταγράψετε τις πληροφορίες για να επαναλάβετε τις συναλλαγές, επειδή το tempdb δημιουργείται ξανά κάθε φορά που θα κάνετε επανεκκίνηση του SQL Server. Επομένως, δεν έχει συναλλαγές για την προώθηση ή για να επαναφέρετε. Κατά την εκκίνηση του SQL Server, το tempdb δημιουργείται ξανά χρησιμοποιώντας ένα αντίγραφο της βάσης δεδομένων model και επαναφορά του μεγέθους του τελευταίου έχει ρυθμιστεί το tempdb .

Από προεπιλογή, στη βάση δεδομένων tempdb έχει ρυθμιστεί για αυτόματη προσαρμογή όπως απαιτείται. Επομένως, αυτή η βάση δεδομένων μπορεί να αναπτυχθεί εγκαίρως σε μέγεθος μεγαλύτερο από το μέγεθος που θέλετε. Μια απλή επανεκκίνηση του SQL Server επαναφέρει το μέγεθος του tempdb του μεγέθους του τελευταίου έχει ρυθμιστεί. Το καθορισμένο μέγεθος είναι το τελευταίο ρητή μεγέθους που έχει οριστεί με μέγεθος αρχείου Αλλαγή λειτουργίας όπως ΤΡΟΠΟΠΟΊΗΣΗ βάσης ΔΕΔΟΜΈΝΩΝ που χρησιμοποιεί την επιλογή να ΤΡΟΠΟΠΟΙΉΣΕΤΕ το ΑΡΧΕΊΟ ή η εντολή DBCC SHRINKFILE.

Μπορείτε να χρησιμοποιήσετε τις ακόλουθες τρεις μεθόδους για να συρρικνώσετε tempdb σε μέγεθος μικρότερο από το μέγεθος που έχει ρυθμιστεί.

Μέθοδος 1: Χρήση Transact-SQL εντολές
Σημείωση Αυτή η μέθοδος απαιτεί να κάνετε επανεκκίνηση του SQL Server.

  1. Διακοπή διακομιστή SQL. Σε μια γραμμή εντολών, πληκτρολογήστε την ακόλουθη εντολή για να ξεκινήσετε τον SQL Server:
    Sqlservr - c -f
    Το -c και -fπαράμετροι προκαλέσουν SQL Server για να ξεκινήσετε σε μια λειτουργία ελάχιστη ρύθμιση παραμέτρων που έχει tempdb μέγεθος 1 MB για το αρχείο δεδομένων και 0,5 MB για το αρχείο καταγραφής.

    Σημείωση Εάν χρησιμοποιείτε μια επώνυμη εμφάνιση του SQL Server, πρέπει να αλλάξετε στον κατάλληλο φάκελο (name\Binn παρουσία SQL Files\Microsoft πρόγραμμα Server\MSSQL$) και να χρησιμοποιήσετε το -s Εναλλαγή (-όνομα_παρουσίας % s).
  2. Συνδεθείτε στον SQL Server, χρησιμοποιώντας το Query Analyzer και, στη συνέχεια, εκτελέστε τις ακόλουθες εντολές Transact-SQL:
       ALTER DATABASE tempdb MODIFY FILE   (NAME = 'tempdev', SIZE = target_size_in_MB)    --Desired target size for the data file   ALTER DATABASE tempdb MODIFY FILE   (NAME = 'templog', SIZE = target_size_in_MB)   --Desired target size for the log file					
  3. Διακοπή διακομιστή SQL. Για να το κάνετε αυτό, πιέστε το συνδυασμό πλήκτρων Ctrl + C στο παράθυρο γραμμής εντολών, κάντε επανεκκίνηση του SQL Server ως υπηρεσία και, στη συνέχεια, επιβεβαιώστε το μέγεθος των αρχείων Tempdb.mdf και Templog.ldf.
Ένας περιορισμός αυτής της μεθόδου είναι ότι αυτό λειτουργεί μόνο για τα προεπιλεγμένα tempdb λογική αρχεία: tempdev και templog. Εάν περισσότερα αρχεία προστίθενται στο tempdb, μπορείτε να τα συρρικνώσετε μετά την επανεκκίνηση του SQL Server ως υπηρεσία. Όλα τα αρχεία tempdb δημιουργούνται εκ νέου κατά την εκκίνηση. Ωστόσο, είναι κενά και μπορεί να καταργηθεί. Για να καταργήσετε επιπλέον αρχεία tempdb, χρησιμοποιήστε την εντολή ΤΡΟΠΟΠΟΊΗΣΗ βάσης ΔΕΔΟΜΈΝΩΝ, χρησιμοποιώντας την επιλογή ΚΑΤΆΡΓΗΣΗ ΑΡΧΕΊΟΥ.

Μέθοδος 2: Χρησιμοποιήστε την εντολή DBCC SHRINKDATABASE
Χρησιμοποιήστε την εντολή DBCC SHRINKDATABASE για να συμπτύξετε τη βάση δεδομένων tempdb . DBCC SHRINKDATABASE λαμβάνει την παράμετρο target_percent. Αυτό είναι το επιθυμητό ποσοστό ελεύθερου χώρου που απομένει στο αρχείο βάσης δεδομένων αφού συρρικνωθεί στη βάση δεδομένων. Εάν χρησιμοποιείτε DBCC SHRINKDATABASE, ίσως χρειαστεί να κάνετε επανεκκίνηση του SQL Server.

Σημαντικό Εάν εκτελέσετε DBCC SHRINKDATABASE, καμία άλλη δραστηριότητα μπορεί να παρουσιάζεται με τη βάση δεδομένων tempdb . Για να βεβαιωθείτε ότι δεν χρησιμοποιείτε άλλες διαδικασίες tempdb , κατά την εκτέλεση DBCC SHRINKDATABASE, πρέπει να ξεκινήσετε τον SQL Server σε κατάσταση λειτουργίας ενός χρήστη. Για περισσότερες πληροφορίες, ανατρέξτε στην ενότητα "Αποτελέσματα της εκτέλεσης του DBCC SHRINKDATABASE ή DBCCSHRINKFILE ενώ tempdb είναι σε χρήση".
  1. Προσδιορίστε το χώρο που χρησιμοποιείται αυτήν τη στιγμή στο tempdb χρησιμοποιώντας το sp_spaceused αποθηκευμένη διαδικασία. Στη συνέχεια, υπολογίζει το ποσοστό του ελεύθερου χώρου που απομένει για χρήση ως παράμετρο DBCC SHRINKDATABASE. Ο υπολογισμός αυτός είναι με βάση το μέγεθος της βάσης δεδομένων που θέλετε.

    Σημείωση Σε ορισμένες περιπτώσεις, ίσως χρειαστεί να εκτελέσετε sp_spaceused @updateusage = true για να υπολογίσετε εκ νέου το χώρο που χρησιμοποιείται και για να αποκτήσετε μια ενημερωμένη αναφορά. Ανατρέξτε στα ηλεκτρονικά βιβλία του SQL Server για περισσότερες πληροφορίες σχετικά με το sp_spaceused αποθηκευμένη διαδικασία.

    Εξετάστε το ακόλουθο παράδειγμα:
    Ας υποθέσουμε ότι tempdb έχει δύο αρχεία: το κύριο αρχείο δεδομένων (Tempdb.mdf) που είναι 100 MB και το αρχείο καταγραφής (Tempdb.ldf) που είναι 30 MB. Ας υποθέσουμε ότι sp_spaceused αναφέρει ότι το κύριο αρχείο δεδομένων περιέχει 60 MB δεδομένων. Επίσης, υποθέστε ότι θέλετε να συρρικνώσετε το κύριο αρχείο δεδομένων στα 80 MB. Υπολογίζει το επιθυμητό ποσοστό ελεύθερου χώρου που απομένει μετά την συρρίκνωσης: 80 MB-60 MB = 20 MB. Τώρα, Διαίρεση 20 MB από 80 MB = 25 τοις εκατό και αυτό σημαίνει ότι σας target_percent. Το αρχείο καταγραφής συναλλαγών είναι συρρικνωθεί αναλόγως, αφήνοντας 25% ή 20 MB χώρου ελεύθερης μετά συρρικνωθεί στη βάση δεδομένων.
  2. Συνδεθείτε στον SQL Server, χρησιμοποιώντας το Query Analyzer και, στη συνέχεια, εκτελέστε τις ακόλουθες εντολές Transact-SQL:
       dbcc shrinkdatabase (tempdb, 'target percent')    -- This command shrinks the tempdb database					
Υπάρχουν περιορισμοί για χρήση της εντολής DBCC SHRINKDATABASE στη βάση δεδομένων tempdb . Το μέγεθος του προορισμού για τα αρχεία δεδομένων και καταγραφής δεν μπορεί να είναι μικρότερο από το μέγεθος που καθορίζεται όταν η βάση δεδομένων έχει δημιουργηθεί ή μικρότερο από το τελευταίο μέγεθος που έχει καθοριστεί ρητά, χρησιμοποιώντας μια λειτουργία αλλαγής μεγέθους αρχείου, όπως ΤΡΟΠΟΠΟΊΗΣΗ βάσης ΔΕΔΟΜΈΝΩΝ που χρησιμοποιεί την επιλογή να ΤΡΟΠΟΠΟΙΉΣΕΤΕ το ΑΡΧΕΊΟ ή η εντολή DBCC SHRINKFILE. Μια άλλη περιορισμός DBCC SHRINKDATABASE είναι ο υπολογισμός της παραμέτρου target_percentage και την εξάρτηση από τον τρέχοντα χώρο που χρησιμοποιείται.

Μέθοδος 3: Χρησιμοποιήστε την εντολή DBCC SHRINKFILE
Χρησιμοποιήστε την εντολή DBCC SHRINKFILE για να συμπτύξετε τα αρχεία μεμονωμένων αρχείων tempdb . DBCC SHRINKFILE παρέχει μεγαλύτερη ευελιξία από DBCC SHRINKDATABASE, επειδή μπορείτε να το χρησιμοποιήσετε σε ένα μοναδικό αρχείο βάσης δεδομένων χωρίς να επηρεαστούν τα άλλα αρχεία που ανήκουν στην ίδια βάση δεδομένων. DBCC SHRINKFILE λαμβάνει το μέγεθος προορισμού παράμετρος, και αυτό είναι το επιθυμητό τελικό μέγεθος για το αρχείο βάσης δεδομένων.

Σημαντικό Πρέπει να εκτελέσετε εντολή DBCC SHRINKFILE ενώ καμία άλλη δραστηριότητα που παρουσιάζεται στη βάση δεδομένων tempdb . Για να βεβαιωθείτε ότι δεν χρησιμοποιείτε άλλες διαδικασίες tempdb , ενώ εκτελεί DBCC SHRINKFILE, πρέπει να επανεκκινήσετε το SQL Server σε κατάσταση λειτουργίας ενός χρήστη. Για περισσότερες πληροφορίες σχετικά με DBCC SHRINKFILE, ανατρέξτε στην ενότητα "Αποτελέσματα της εκτέλεσης του DBCC SHRINKDATABASE ή DBCCSHRINKFILE ενώ tempdb είναι σε χρήση".
  1. Προσδιορίστε το επιθυμητό μέγεθος για το κύριο αρχείο δεδομένων (tempdb.mdf), το αρχείο καταγραφής (templog.ldf) και πρόσθετα αρχεία που προστίθενται tempdb. Βεβαιωθείτε ότι ο χώρος που χρησιμοποιείται στα αρχεία είναι μικρότερη ή ίση με το μέγεθος του προορισμού που θέλετε.
  2. Συνδεθείτε στον SQL Server, χρησιμοποιώντας το Query Analyzer και, στη συνέχεια, εκτελέστε τις ακόλουθες εντολές Transact-SQL για τα αρχεία συγκεκριμένη βάση δεδομένων που θέλετε να συρρικνώσετε:
       use tempdb   go   dbcc shrinkfile (tempdev, 'target size in MB')   go   -- this command shrinks the primary data file   dbcc shrinkfile (templog, 'target size in MB')   go   -- this command shrinks the log file, examine the last paragraph.						
Ένα πλεονέκτημα DBCC SHRINKFILE είναι ότι αυτό μπορεί να μειώσει το μέγεθος ενός αρχείου σε ένα μέγεθος μικρότερο από το αρχικό της μέγεθος. Μπορείτε να εκδώσετε DBCC SHRINKFILE σε οποιοδήποτε από τα αρχεία δεδομένων ή καταγραφής. Ένας περιορισμός DBCC SHRINKFILE είναι ότι δεν μπορείτε να κάνετε τη βάση δεδομένων μικρότερο από το μέγεθος της βάσης δεδομένων model.

Στον SQL Server 7.0 συρρικνώστε ένα αρχείο καταγραφής συναλλαγών είναι μια λειτουργία αναστολής, και πρέπει να εκδώσετε ένα αρχείο καταγραφής περικοπής και της δημιουργίας αντιγράφων ασφαλείας για να σας βοηθήσει η λειτουργία συρρίκνωσης σε μια βάση δεδομένων. Από προεπιλογή, tempdb έχει την επιλογή trunc συνδεθείτε chkpt οριστεί σε ON. Επομένως, δεν χρειάζεται να εκδώσει μια περικοπή καταγραφής για αυτήν τη βάση δεδομένων.

Για περισσότερες πληροφορίες σχετικά με τον τρόπο για να συμπτύξετε μια βάση δεδομένων καταγραφής συναλλαγών στον SQL Server 7.0, κάντε κλικ στο ακόλουθο άρθρο, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:
256650 INF: Πώς μπορείτε να συρρικνώσετε το αρχείο καταγραφής συναλλαγών του SQL Server 7.0

Επιπτώσεις της εκτέλεσης DBCC SHRINKDATABASE ή DBCCSHRINKFILE ενώ tempdb βρίσκεται σε χρήση

Εάν χρησιμοποιείται tempdb , προσπαθείτε να τα συρρικνώσετε χρησιμοποιώντας την DBCC SHRINKDATABASE ή εντολές DBCC SHRINKFILE, ενδέχεται να λάβετε πολλά σφάλματα συνέπειας που μοιάζουν με τα ακόλουθα και ενδέχεται να αποτύχει η λειτουργία συρρίκνωσης:
  • Διακομιστής: Msg 2501, επίπεδο 16, κατάσταση 1, γραμμή 1Δεν ήταν δυνατή η εύρεση του πίνακα με το όνομα '1525580473'. Ελέγξτε το sysobjects.
  • Διακομιστής: Μήνυμα λάθους 8909, 16, 1, κατάσταση επιπέδου γραμμής 0Πίνακας καταστραφεί: Αντικείμενο 1 Αναγνωριστικό ID ευρετηρίου 0, σελίδα ID % S_PGID. Το PageId στην κεφαλίδα της σελίδας = % S_PGID.
Παρόλο που το σφάλμα 2501 δεν μπορεί να σημαίνει οποιαδήποτε καταστροφή στο tempdb, αυτό το σφάλμα έχει ως αποτέλεσμα να αποτύχει η λειτουργία συρρίκνωσης. Από την άλλη πλευρά, το σφάλμα 8909 θα μπορούσε να σημαίνει καταστροφή της βάσης δεδομένων tempdb . Κάντε επανεκκίνηση του SQL Server για να δημιουργήσετε ξανά tempdb και εκκαθάριση των σφαλμάτων συνέπειας. Ωστόσο, έχετε υπόψη σας ότι ενδέχεται να υπάρχουν άλλα αίτια για σφάλματα δεδομένων φυσικής καταστροφής όπως σφάλμα 8909 και αυτές περιλαμβάνουν ζητήματα υποσύστημα εισόδου/εξόδου.

ΑΝΑΦΟΡΕΣ

SQL Server βιβλία ηλεκτρονικά. θέματα: "DBCC SHRINKFILE"; "DBCC SHRINKDATABASE"

Προειδοποίηση: Αυτό το άρθρο έχει μεταφραστεί με μηχανική μετάφραση

Ιδιότητες

Αναγνωριστικό άρθρου: 307487 - Τελευταία αναθεώρηση: 06/07/2013 05:29:00 - Αναθεώρηση: 5.0

Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 7.0 Standard Edition, Microsoft SQL Server 2000 64-bit Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Workgroup Edition

  • kbsqlsetup kbhowtomaster kbmt KB307487 KbMtel
Σχόλια