Cómo solucionar los problemas de espacio causados ​​por SQL Server

Comparte ahora:

Varias veces SQL Server podría ser el motivo del problema de espacio en los discos. En este artículo, veremos cuáles son las causas fundamentales de este problema y cómo podemos solucionarlo.

La SQL Server necesita espacio.

Problemas de espacio causados ​​por SQLMuchas veces SQL Server necesitará espacio en disco. Esto puede deberse al aumento de datos dentro de su base de datos o archivos de registro no eliminados o archivos de respaldo no eliminados o archivos de base de datos no deseados no eliminados. Cualquiera que sea la razón, en un SQL Server, el espacio en el disco es muy importante para las transacciones de la base de datos.

La tarea de limpieza no funciona

Si está utilizando planes de mantenimiento nativos de SQL para hacer una copia de seguridad de su SQL server bases de datos, puede haber posibilidades de que el módulo de limpieza en esos planes de mantenimiento no esté haciendo su tarea. Cuando el disco se quede sin espacio, se dará cuenta de que los archivos de copia de seguridad antiguos no se limpian correctamente. Habría incluido el módulo de limpieza en el plan de mantenimiento. A pesar de todo esto, ¿se pregunta por qué no estaba funcionando?

Compruebe si ha mencionado la carpeta correcta para eliminar los archivos de copia de seguridad, compruebe si ha mencionado la extensión de archivo correcta para eliminar los archivos de copia de seguridad, intente con el punto "." y sin un punto en la extensión del archivo.

Los archivos de registro son enormes que los archivos de base de datos

SQL Server Database
Causa más común de problema de espacio en SQL Server Se trata de los archivos de registro no supervisados ​​y los archivos tempdb. Si bien tempdb se reduce a su tamaño original cada vez que se reinicia el servicio SQL, es recomendable supervisar su crecimiento y reducirlo cuando esté a punto de ocupar todo el espacio en disco. Al igual que tempdb, los archivos de registro deben supervisarse constantemente. Asegúrese de contar con copias de seguridad de los registros para mantenerlos siempre con un tamaño mínimo.

Archivos de base de datos no utilizados

Puede haber muchos archivos de base de datos sin usar y sin adjuntar en su disco y desperdiciar espacio. Ejecute el script en su SQL Server instancia para identificar dichos archivos junto con su ruta. Después de un análisis rápido, si aún está seguro de que esos archivos ya no son necesarios, elimínelos y ahorre espacio.

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 Corrupción de la base de datos

Además de supervisar y mantener su espacio en disco, también supervise el estado de su disco. Un disco en mal estado puede dañar su SQL Server bases de datos. Si esto sucede, utilice la herramienta de recuperación de la base de datos como DataNumen SQL Recovery a arreglar corrupto SQL Server.

Introducción del autor:

Neil Varley es un experto en recuperación de datos en DataNumen, Inc., que es el líder mundial en tecnologías de recuperación de datos, incluyendo reparar la corrupción del correo electrónico de Outlook y productos de software de recuperación de Excel. Para más información visite www.datanumen.com

Comparte ahora:

Los comentarios están cerrados.