Como corrigir os problemas de espaço causados ​​por SQL Server

Compartilhe agora:

Várias vezes SQL Server pode ser o motivo do problema de espaço nos discos. Neste artigo, veremos quais são as causas principais desse problema e como podemos corrigi-lo.

Sua SQL Server precisa de espaço.

Problemas de espaço causados ​​pelo SQLMuitas vezes SQL Server precisará de espaço em disco. Isso pode ocorrer devido ao aumento de dados dentro do seu banco de dados ou arquivos de log não reduzidos ou arquivos de backup não excluídos ou arquivos de banco de dados indesejados não excluídos. Seja qual for o motivo, em um SQL Server, o espaço no disco é muito importante para as transações do banco de dados.

A tarefa de limpeza não está funcionando

Se você estiver usando os planos de manutenção nativos do SQL para fazer backup de SQL server bancos de dados, pode haver chances de que o módulo de limpeza nesses planos de manutenção não esteja realizando sua tarefa. Quando o disco ficar sem espaço, você perceberá que os arquivos de backup antigos não foram devidamente limpos. Você teria incluído o módulo de limpeza no plano de manutenção. Apesar de tudo isso, você se pergunta por que não estava funcionando?

Verifique se você mencionou a pasta correta para excluir arquivos de backup, verifique se você mencionou a extensão de arquivo correta para excluir arquivos de backup, tente com ponto “.” e sem um ponto na extensão do arquivo.

Os arquivos de log são maiores que os arquivos de banco de dados

SQL Server banco de dadosMost causa comum para a questão do espaço em SQL Server são os arquivos de log autônomos e os arquivos tempdb. Embora o tempdb seja reduzido ao tamanho original sempre que o SQL Service restarts, é uma boa prática monitorar o crescimento do tempdb e reduzi-lo quando estiver prestes a consumir todo o espaço em disco. Semelhante ao tempdb, os arquivos de log devem estar sempre sob verificação. Certifique-se de ter um backup de log instalado para sempre manter os arquivos de log em tamanho mínimo.

Arquivos de banco de dados não utilizados

Pode haver muitos arquivos de banco de dados não utilizados e não anexados em seu disco e desperdiçando espaço. Execute o script em seu SQL Server instância para identificar esses arquivos junto com seu caminho. Após uma análise rápida, se você ainda tiver certeza de que esses arquivos não são mais necessários, exclua-os e economize espaço.

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 Corrupção de banco de dados

Além de monitorar e manter o espaço em disco, também monitore a integridade do disco. Disco não íntegro pode corromper seu SQL Server bancos de dados. Se isso acontecer, use uma ferramenta de recuperação de banco de dados como DataNumen SQL Recovery para consertar corrompido SQL Server.

Introdução do autor:

Neil Varley é um especialista em recuperação de dados em DataNumen, Inc., líder mundial em tecnologias de recuperação de dados, incluindo reparar corrupção de e-mail do Outlook e produtos de software de recuperação do Excel. Para mais informações visite www.datanumen.com

Compartilhe agora:

Comentários estão fechados.