Πώς να επιδιορθώσετε τα διαστημικά ζητήματα που προκαλούνται από SQL Server

Κοινή χρήση τώρα:

Πολλές φορές SQL Server μπορεί να είναι ο λόγος για το πρόβλημα του χώρου στους δίσκους. Σε αυτό το άρθρο, θα δούμε ποιες είναι οι βασικές αιτίες για αυτό το ζήτημα και πώς μπορούμε να το διορθώσουμε.

Σας SQL Server χρειάζεται χώρο.

Ζητήματα χώρου που προκαλούνται από SQLΠολλές φορές SQL Server θα χρειαστεί χώρο στο δίσκο. Αυτό μπορεί να οφείλεται σε αυξανόμενα δεδομένα μέσα στη βάση δεδομένων σας ή κατάργηση αποσύνδεσης αρχείων καταγραφής ή μη διαγραμμένων εφεδρικών αρχείων ή μη διαγραμμένων, ανεπιθύμητων αρχείων βάσης δεδομένων. Όποιος και αν είναι ο λόγος, σε ένα SQL Server, ο χώρος στο δίσκο είναι πολύ σημαντικός για συναλλαγές βάσης δεδομένων.

Η εργασία εκκαθάρισης δεν λειτουργεί

Εάν χρησιμοποιείτε τα εγγενή σχέδια συντήρησης της SQL για να δημιουργήσετε αντίγραφα ασφαλείας του SQL server βάσεις δεδομένων, μπορεί να υπάρχουν πιθανότητες ότι η ενότητα καθαρισμού σε αυτά τα σχέδια συντήρησης δεν εκτελεί το καθήκον τους. Όταν ο δίσκος εξαντληθεί, θα συνειδητοποιήσετε ότι τα παλιά αρχεία αντιγράφων ασφαλείας δεν καθαρίζονται σωστά. Θα συμπεριλάβατε τη μονάδα καθαρισμού στο πρόγραμμα συντήρησης. Παρά όλα αυτά αναρωτιέστε γιατί δεν λειτουργούσε;

Ελέγξτε εάν έχετε αναφέρει τον σωστό φάκελο για τη διαγραφή αντιγράφων ασφαλείας αρχείων, ελέγξτε αν έχετε αναφέρει τη σωστή επέκταση αρχείου για να διαγράψετε αρχεία αντιγράφων ασφαλείας, δοκιμάστε με την τελεία "." και χωρίς τελεία στην επέκταση αρχείου.

Τα αρχεία καταγραφής είναι τεράστια από τα αρχεία βάσης δεδομένων

SQL Server βάση δεδομένωνΗ πιο συνηθισμένη αιτία προβλήματος χώρου SQL Server είναι τα μη επιτηρούμενα αρχεία καταγραφής και τα αρχεία tempdb. Παρόλο που το tempdb θα συρρικνώνεται στο αρχικό μέγεθος κάθε φορά που επανεκκινείται η υπηρεσία SQL, είναι καλή πρακτική να παρακολουθείτε την ανάπτυξη του tempdb και να το συρρικνώνετε όταν πρόκειται να καταλαμβάνει ολόκληρο τον χώρο στο δίσκο. Όπως και με το tempdb, τα αρχεία καταγραφής θα πρέπει να ελέγχονται πάντα. Βεβαιωθείτε ότι έχετε δημιουργήσει αντίγραφα ασφαλείας των αρχείων καταγραφής για να διατηρείτε πάντα τα αρχεία καταγραφής στο ελάχιστο μέγεθος.

Μη χρησιμοποιημένα αρχεία βάσης δεδομένων

Μπορεί να υπάρχουν πολλά αχρησιμοποίητα και μη συνημμένα αρχεία βάσης δεδομένων που κάθονται στο δίσκο σας και χάνουν χώρο. Εκτελέστε το σενάριο στο SQL Server παράδειγμα για την αναγνώριση τέτοιων αρχείων μαζί με τη διαδρομή τους. Μετά από μια γρήγορη ανάλυση, εάν εξακολουθείτε να είστε βέβαιοι ότι αυτά τα αρχεία δεν χρειάζονται πια, διαγράψτε τα και εξοικονομήστε χώρο.

DECLARE @dpth NVARCHAR(512)

EXEC master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE'
    ,N'Software\Microsoft\MSSQLServer\MSSQLServer'
    ,N'DefaultData'
    ,@dpth OUTPUT

DECLARE @lpth NVARCHAR(512)

EXEC master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE'
    ,N'Software\Microsoft\MSSQLServer\MSSQLServer'
    ,N'DefaultLog'
    ,@lpth OUTPUT

DECLARE @bk NVARCHAR(512)

EXEC master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE'
    ,N'Software\Microsoft\MSSQLServer\MSSQLServer'
    ,N'BackupDirectory'
    ,@bk OUTPUT

DECLARE @md NVARCHAR(512)

EXEC master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE'
    ,N'Software\Microsoft\MSSQLServer\MSSQLServer\Parameters'
    ,N'SqlArg0'
    ,@md OUTPUT

SELECT @md = substring(@md, 3, 255)

SELECT @md = substring(@md, 1, len(@md) - charindex('\', reverse(@md)))

DECLARE @ml NVARCHAR(512)

EXEC master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE'
    ,N'Software\Microsoft\MSSQLServer\MSSQLServer\Parameters'
    ,N'SqlArg2'
    ,@ml OUTPUT

SELECT @ml = substring(@ml, 3, 255)

SELECT @ml = substring(@ml, 1, len(@ml) - charindex('\', reverse(@ml)))

SET @dpth = isnull(@dpth, @md)
SET @lpth = isnull(@lpth, @ml)

PRINT @dpth
PRINT @lpth

EXEC sp_configure 'show advanced'
    ,1

RECONFIGURE

EXEC sp_configure 'xp_cmdshell'
    ,1

RECONFIGURE

IF object_id('tempdb.dbo.#table1') IS NOT NULL
    DROP TABLE #table1

CREATE TABLE #table1 (
    [filename] VARCHAR(2000)
    ,depth INT
    ,isFile INT
    )

SET @dpth = 'DIR ' + @dpth + '\*.mdf /b /s'
SET @lpth = 'DIR ' + @lpth + '\*.ldf /b /s'

INSERT INTO #table1
EXEC xp_DirTree @dpth
    ,1
    ,1

INSERT INTO #table1
EXEC xp_DirTree @lpth
    ,1
    ,1

DELETE
FROM #table1
WHERE isFile <> 1

UPDATE #table1
SET filename = rtrim(filename)

CREATE TABLE t_list (
    filepath VARCHAR(2000)
    ,sizeinmb DECIMAL(18, 2)
    )

INSERT INTO t_list (filepath)
SELECT otable.filename AS orphaned_files
FROM #table1 otable
LEFT OUTER JOIN master.dbo.sysaltfiles db ON rtrim(db.filename) = otable.filename
WHERE db.dbid IS NULL
ORDER BY 1

DECLARE @sizeingb AS DECIMAL(18, 2)
DECLARE @filepath AS VARCHAR(2000)

DECLARE db_cursor CURSOR
FOR
SELECT filepath
FROM t_list

OPEN db_cursor

FETCH NEXT
FROM db_cursor
INTO @filepath

WHILE @@FETCH_STATUS = 0
BEGIN
    CREATE TABLE t_temp (c1 VARCHAR(2000))

    DECLARE @cmd AS VARCHAR(3000)

    SET @cmd = 'dir ' + @filepath

    PRINT @cmd

    INSERT INTO t_temp
    EXEC master.dbo.xp_cmdshell @cmd

    DELETE
    FROM t_temp
    WHERE c1 NOT LIKE '%1 File(s)%bytes'

    DECLARE @size AS DECIMAL(18, 2)

    SET @size = (
            SELECT TOP 1 replace(replace(replace(c1, '               1 File(s)    ', ''), ',', ''), ' bytes', '')
            FROM t_temp
            WHERE c1 IS NOT NULL
            )
    SET @size = cast((@size / (1024 * 1024)) AS DECIMAL(18, 2))

    DROP TABLE t_temp

    UPDATE t_list
    SET sizeinmb = @size
    WHERE filepath = @filepath

    FETCH NEXT
    FROM db_cursor
    INTO @filepath
END

CLOSE db_cursor

DEALLOCATE db_cursor

SELECT *
FROM t_list

DROP TABLE t_list

EXEC sp_configure 'show advanced'
    ,1

RECONFIGURE

EXEC sp_configure 'xp_cmdshell'
    ,0

RECONFIGURE

SQL Server Διαφθορά βάσης δεδομένων

Εκτός από την παρακολούθηση και τη διατήρηση του χώρου στο δίσκο σας, παρακολουθήστε επίσης την υγεία του δίσκου σας. Ο ανθυγιεινός δίσκος μπορεί να καταστρέψει το δικό σας SQL Server βάσεις δεδομένων. Εάν συμβεί αυτό, χρησιμοποιήστε το εργαλείο ανάκτησης βάσης δεδομένων όπως DataNumen SQL Recovery προς την διορθώθηκε κατεστραμμένο SQL Server.

Εισαγωγή συγγραφέα:

Ο Neil Varley είναι ειδικός στην ανάκτηση δεδομένων στο DataNumen, Inc., η οποία είναι ο παγκόσμιος ηγέτης στις τεχνολογίες ανάκτησης δεδομένων, συμπεριλαμβανομένων επιδιορθώστε την καταστροφή email του Outlook και υπερέχουν προϊόντα λογισμικού ανάκτησης. Για περισσότερες πληροφορίες επισκεφθείτε www.datanumen.com

Κοινή χρήση τώρα:

Τα σχόλια είναι κλειστά.