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.
Muchas 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
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