So beheben Sie die durch verursachten Speicherplatzprobleme SQL Server

Jetzt teilen:

Mehrmals SQL Server Dies könnte der Grund für das Speicherplatzproblem auf Datenträgern sein. In diesem Artikel werden wir sehen, was die Hauptursachen für dieses Problem sind und wie wir es beheben können.

Ihre SQL Server braucht Platz.

Durch SQL verursachte SpeicherplatzproblemeViele Male SQL Server benötigt Speicherplatz. Dies kann auf wachsende Daten in Ihrer Datenbank oder auf nicht geschrumpfte Protokolldateien oder nicht gelöschte Sicherungsdateien oder nicht gelöschte, unerwünschte Datenbankdateien zurückzuführen sein. Was auch immer der Grund ist, auf einem SQL ServerSpeicherplatz auf der Festplatte ist für Datenbanktransaktionen sehr wichtig.

Bereinigungsaufgabe funktioniert nicht

Wenn Sie die nativen Wartungspläne von SQL zum Sichern Ihrer Daten verwenden SQL server In Datenbanken besteht möglicherweise die Möglichkeit, dass das Bereinigungsmodul in diesen Wartungsplänen seine Aufgabe nicht erfüllt. Wenn auf der Festplatte nicht genügend Speicherplatz vorhanden ist, werden Sie feststellen, dass alte Sicherungsdateien nicht ordnungsgemäß bereinigt werden. Sie hätten das Bereinigungsmodul in den Wartungsplan aufgenommen. Fragen Sie sich trotzdem, warum es nicht funktioniert hat?

Überprüfen Sie, ob Sie den richtigen Ordner zum Löschen von Sicherungsdateien angegeben haben. Überprüfen Sie, ob Sie die richtige Dateierweiterung zum Löschen von Sicherungsdateien angegeben haben. Versuchen Sie es mit dem Punkt "." und ohne Punkt in der Dateierweiterung.

Protokolldateien sind riesiger als Datenbankdateien

SQL Server DatenbankHäufigste Ursache für Platzprobleme auf SQL Server Es handelt sich dabei um die unbeaufsichtigten Protokolldateien und die tempdb-Datei. Obwohl die tempdb-Datei bei jedem Neustart des SQL-Servers auf ihre ursprüngliche Größe verkleinert wird, empfiehlt es sich, ihr Wachstum zu überwachen und sie zu verkleinern, sobald sie fast den gesamten Speicherplatz belegt. Ähnlich wie die tempdb-Datei sollten auch die Protokolldateien regelmäßig überprüft werden. Stellen Sie sicher, dass Sie über eine Protokollsicherung verfügen, um die Größe der Protokolldateien stets so gering wie möglich zu halten.

Nicht verwendete Datenbankdateien

Möglicherweise befinden sich viele nicht verwendete und nicht angehängte Datenbankdateien auf Ihrer Festplatte und verschwenden Speicherplatz. Führen Sie das Skript auf Ihrem Computer aus SQL Server Instanz, um solche Dateien zusammen mit ihrem Pfad zu identifizieren. Wenn Sie nach einer kurzen Analyse immer noch sicher sind, dass diese Dateien nicht mehr benötigt werden, löschen Sie sie und sparen Sie Platz.

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 Datenbankkorruption

Überwachen Sie nicht nur den Speicherplatz, sondern auch den Zustand Ihrer Festplatte. Eine ungesunde Festplatte kann Ihre beschädigen SQL Server Datenbanken. Verwenden Sie in diesem Fall das Datenbankwiederherstellungstool wie DataNumen SQL Recovery zu Fix beschädigt SQL Server.

Einführung des Autors:

Neil Varley ist ein Experte für Datenwiederherstellung in DataNumen, Inc., das weltweit führend bei Datenwiederherstellungstechnologien ist, einschließlich Relook-E-Mail-Beschädigung reparieren und Excel-Wiederherstellungssoftwareprodukte. Für weitere Informationen besuchen Sie www.datanumen.com €XNUMX

Jetzt teilen:

Kommentare sind geschlossen.