KB2967240 - ΕΠΙΔΙΌΡΘΩΣΗ: Δεν είναι δυνατή η ανάκτηση του αχρησιμοποίητου χώρου με χρήση της λειτουργίας συρρίκνωσης στον πίνακα που περιέχει μια στήλη LOB στο SQL Server

Ισχύει για
SQL Server 2008 Service Pack 3 SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2008 R2 Service Pack 2 SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Standard SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard

Συμπτώματα

Ας υποθέσουμε ότι έχετε έναν πίνακα που περιέχει μια στήλη μεγάλου αντικειμένου (LOB) στο Microsoft SQL Server 2008, SQL Server 2008 R2, SQL Server 2012 ή SQL Server 2014. Όταν ενημερώνετε τη στήλη LOB με μικρότερο μέγεθος δεδομένων LOB και προσπαθείτε να ανακτήσετε το χώρο που δεν χρησιμοποιείται χρησιμοποιώντας τις ακόλουθες μεθόδους:

  • DBCC SHRINKDATABASE / DBCC SHRINKFILE
  • ALTER INDEX REORGANIZE WITH (LOB_COMPACTION = ON)

Σε αυτήν την περίπτωση, ο αχρησιμοποίητος χώρος δεν μπορεί να ανακτηθεί.

Επίλυση

Το πρόβλημα διορθώθηκε για πρώτη φορά στην ακόλουθη αθροιστική ενημερωμένη έκδοση του SQL Server.

Αθροιστική ενημερωμένη έκδοση 2 για SQL Server 2012 SP2 /el-gr/help/2983175

Αθροιστική ενημερωμένη έκδοση 11 για SQL Server 2012 SP1 /el-gr/help/2975396

Αθροιστική ενημερωμένη έκδοση 13 για SQL Server 2008 R2 SP2 /el-gr/help/2967540

Αθροιστική ενημέρωση 2 για το SQL Server 2014 /el-gr/help/2967546

Αθροιστική ενημερωμένη έκδοση 17 για SQL Server 2008 SP3 /el-gr/help/2958696

Πληροφορίες σχετικά με τις αθροιστικές ενημερώσεις για SQL Server

Κάθε νέα αθροιστική ενημερωμένη έκδοση για SQL Server περιέχει όλες τις επείγουσες επιδιορθώσεις και όλες τις ενημερώσεις κώδικα ασφαλείας που συμπεριλήφθηκαν με την προηγούμενη αθροιστική ενημερωμένη έκδοση. Δείτε τις πιο πρόσφατες αθροιστικές ενημερώσεις για SQL Server:

      

Λύση

Για να επιλύσετε αυτό το πρόβλημα, χρησιμοποιήστε τις ακόλουθες λύσεις:

  • Εξαγωγή όλων των γραμμών σε νέο πίνακα και μετακίνηση των γραμμών προς τα πίσω. Αυτό αναδιοργανώνει τα δεδομένα LOB και απελευθερώνει τον χώρο που δεν χρησιμοποιείται.
  • Χρησιμοποιήστε DBCC SHRINKFILE με την επιλογή EMPTYFILE για να μετακινήσετε όλα τα δεδομένα σε ένα νέο αρχείο δεδομένων που προστέθηκε και, στη συνέχεια, να καταργήσετε το παλιό αρχείο δεδομένων. Αυτό αναδιοργανώνει τα δεδομένα LOB εκεί, απελευθερώνοντας τον χώρο που δεν χρησιμοποιείται.

Περισσότερες πληροφορίες

Το παρακάτω παράδειγμα εμφανίζει τον χώρο που δεν χρησιμοποιείται χρησιμοποιώντας την εντολή TSQL sp_spaceused 'table_name' πριν και μετά την ενημέρωση της στήλης LOB με μικρότερο μέγεθος δεδομένων LOB:
Πριν από την ενημέρωση:

όνομα γραμμές δεσμευμένο δεδομένα index_size αχρησιμοποίητο
table_name 1000 261072 KB 261056 KB 16 KB 0 KB

Μετά την ενημέρωση:

όνομα γραμμές δεσμευμένο δεδομένα index_size αχρησιμοποίητο
table_name 1000 261072 KB 199672 KB 16 KB 61384 KB

      

Κατάσταση

Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα ζήτημα που αφορά τα προϊόντα της Microsoft που παρατίθενται στην ενότητα "Ισχύει για".