Si të rregulloni problemet e hapësirës të shkaktuara nga SQL Server

Disa herë SQL Server mund të jetë arsyeja për problemin e hapësirës në disqe. Në këtë artikull, ne do të shohim se cilat janë shkaqet kryesore të këtij problemi dhe si mund ta rregullojmë atë.

Juaj SQL Server ka nevojë për hapësirë.

Problemet e hapësirës të shkaktuara nga SQLShume here SQL Server do të duhet hapësirë ​​në disk. Kjo mund të jetë për shkak të rritjes së të dhënave brenda bazës së të dhënave tuaja ose skedarëve të regjistrit të pashkurtuar ose skedarëve rezervë të pafshirë ose skedarëve të pafshirë të padëshiruar të bazës së të dhënave. Cilado qoftë arsyeja, në një SQL Server, hapësira në disk është shumë e rëndësishme për transaksionet e bazës së të dhënave.

Detyra e pastrimit nuk funksionon

Nëse po përdorni planet amtare të mirëmbajtjes së SQL për të kopjuar tuajin SQL server bazat e të dhënave, mund të ketë shanse që moduli i pastrimit në ato plane mirëmbajtjeje të mos e kryejë detyrën e tij. Kur të mbarojë hapësira e diskut, do të kuptoni se skedarët e vjetër rezervë nuk janë pastruar siç duhet. Ju do të kishit përfshirë modulin e pastrimit në planin e mirëmbajtjes. Pavarësisht gjithë kësaj a pyesni veten pse nuk funksionoi?

Kontrolloni nëse keni përmendur dosjen e duhur për të fshirë skedarët rezervë, kontrolloni nëse keni përmendur shtesën e saktë të skedarit për të fshirë skedarët rezervë, provoni me pikë "." dhe pa një pikë në shtesën e skedarit.

Skedarët e regjistrave janë të mëdhenj se skedarët e bazës së të dhënave

SQL Server Baza e të dhënaveMost shkaku i zakonshëm për problemin e hapësirës SQL Server janë skedarët e regjistrit të pambikëqyrur dhe skedarët tempdb. Megjithëse tempdb do të zvogëlohet në madhësinë origjinale sa herë që shërbimi SQL restarts, është një praktikë e mirë për të monitoruar rritjen e tempdb dhe për ta zvogëluar atë kur është gati të hajë të gjithë hapësirën në disk. Ngjashëm me tempdb, skedarët e regjistrit duhet të jenë gjithmonë nën kontroll. Sigurohuni që të keni një kopje rezervë të regjistrit për të mbajtur gjithmonë skedarët e regjistrit në madhësi minimale.

Skedarët e bazës së të dhënave të papërdorura

Mund të ketë shumë skedarë bazë të dhënash të papërdorura dhe të palidhura të vendosura në diskun tuaj dhe duke humbur hapësirë. Ekzekutoni skenarin në tuaj SQL Server shembull për të identifikuar skedarë të tillë së bashku me rrugën e tyre. Pas një analize të shpejtë, nëse jeni akoma i sigurt se ato skedarë nuk nevojiten më, fshijini dhe kurseni hapësirë.

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 Korrupsioni i bazës së të dhënave

Përveç monitorimit dhe ruajtjes së hapësirës në disk, monitoroni edhe shëndetin e diskut. Disku i pashëndetshëm mund të korruptojë tuajin SQL Server bazat e të dhënave. Nëse kjo ndodh, ju lutemi përdorni mjetin e rimëkëmbjes së bazës së të dhënave si p.sh DataNumen SQL Recovery në rregulloj i korruptuar SQL Server.

Hyrje e autorit:

Neil Varley është një ekspert i rikuperimit të të dhënave në DataNumen, Inc., e cila është lider botëror në teknologjitë e rikuperimit të të dhënave, duke përfshirë riparimi i korrupsionit të postës elektronike të Outlook dhe produkte softuerike të rimëkëmbjes excel. Për më shumë informacion vizitoni www.datanumen.com

Komentet janë të mbyllura.