Kako riješiti probleme sa prostorom uzrokovane SQL Server

Podijeli sada:

Nekoliko puta SQL Server može biti razlog za problem sa prostorom na diskovima. U ovom članku ćemo vidjeti koji su osnovni uzroci ovog problema i kako ga možemo riješiti.

Tvoj SQL Server potreban prostor.

Problemi sa prostorom uzrokovani SQL-omMnogo puta SQL Server trebaće prostor na disku. To može biti zbog rastućih podataka unutar vaše baze podataka ili nesmanjenih datoteka evidencije ili neizbrisanih datoteka sigurnosne kopije ili neobrisanih, neželjenih datoteka baze podataka. Šta god da je razlog, na a SQL Server, prostor na disku je veoma važan za transakcije baze podataka.

Zadatak čišćenja ne radi

Ako koristite SQL-ove izvorne planove održavanja za sigurnosno kopiranje SQL server baze podataka, mogu postojati šanse da modul čišćenja u tim planovima održavanja ne radi svoj zadatak. Kada na disku ponestane prostora, shvatit ćete da stare sigurnosne kopije nisu pravilno očišćene. Modul za čišćenje biste uključili u plan održavanja. I pored svega toga, pitate se zašto ne radi?

Provjerite jeste li spomenuli ispravnu mapu za brisanje datoteka sigurnosne kopije, provjerite jeste li spomenuli ispravnu ekstenziju datoteke za brisanje datoteka sigurnosne kopije, pokušajte s tačkom “.” i bez tačke u ekstenziji datoteke.

Dnevnici su ogromni od datoteka baze podataka

SQL Server baza podatakaNajčešći uzrok problema s prostorom na SQL Server su nepraćene datoteke dnevnika i privremene baze podataka (privremena baza podataka). Iako će se privremena baza podataka (privremena baza podataka) smanjiti na originalnu veličinu svaki put kada se SQL servis ponovo pokrene, dobra je praksa pratiti rast privremene baze podataka i smanjiti je kada je pred zauzimanjem cijelog prostora na disku. Slično kao i privremena baza podataka (privremena baza podataka), datoteke dnevnika treba uvijek provjeravati. Osigurajte da imate sigurnosnu kopiju dnevnika kako biste uvijek održavali minimalnu veličinu datoteka dnevnika.

Nekorištene datoteke baze podataka

Možda postoji mnogo neiskorištenih i nepriloženih datoteka baze podataka koje se nalaze na vašem disku i troše prostor. Izvršite skriptu na svom SQL Server instance za identifikaciju takvih datoteka zajedno sa njihovom putanjom. Nakon brze analize, ako ste i dalje sigurni da ti fajlovi više nisu potrebni, obrišite ih i uštedite prostor.

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 Korupcija u bazi podataka

Osim praćenja i održavanja vašeg prostora na disku, također pratite zdravlje vašeg diska. Neispravan disk može oštetiti vaš SQL Server baze podataka. Ako se to dogodi, koristite alat za oporavak baze podataka kao što je DataNumen SQL Recovery to popraviti oštećen SQL Server.

Uvod za autora:

Neil Varley je stručnjak za oporavak podataka DataNumen, Inc., koji je svjetski lider u tehnologijama za oporavak podataka, uključujući popraviti oštećenje Outlook e-pošte i Excel softverski proizvodi za oporavak. Za više informacija posjetite www.datanumen.com

Podijeli sada:

Komentari su zatvoreni.