로 인한 공간 문제를 해결하는 방법 SQL Server

지금 공유 :

여러번 SQL Server 디스크 공간 문제의 원인 일 수 있습니다. 이 기사에서는이 문제의 근본 원인과 해결 방법을 살펴 봅니다.

너의 SQL Server 공간이 필요합니다.

SQL로 인한 공간 문제여러 번 SQL Server 디스크 공간이 필요합니다. 이는 데이터베이스 내부의 데이터 증가, 압축 해제 된 로그 파일 또는 삭제되지 않은 백업 파일 또는 삭제되지 않은 원치 않는 데이터베이스 파일 때문일 수 있습니다. 이유가 무엇이든간에 SQL Server, 디스크 공간은 데이터베이스 트랜잭션에 매우 중요합니다.

정리 작업이 작동하지 않음

SQL의 기본 유지 관리 계획을 사용하여 SQL server 유지 관리 계획의 정리 모듈이 작업을 수행하지 않을 가능성이 있습니다. 디스크 공간이 부족하면 이전 백업 파일이 제대로 정리되지 않았 음을 알게됩니다. 유지 관리 계획에 정리 모듈을 포함 시켰을 것입니다. 이 모든 것에도 불구하고 왜 작동하지 않는지 궁금하십니까?

백업 파일을 삭제할 올바른 폴더를 언급했는지 확인하고 백업 파일을 삭제할 올바른 파일 확장자를 언급했는지 확인한 다음 점 "."으로 시도하십시오. 파일 확장자에 점이 없습니다.

로그 파일은 데이터베이스 파일보다 크다

SQL Server 데이터베이스Most 공간 문제의 일반적인 원인 SQL Server 무인 로그 파일 및 tempdb 파일입니다. tempdb는 SQL 서비스가 복구 될 때마다 원래 크기로 축소되지만tarts, tempdb 증가를 모니터링하고 전체 디스크 공간을 차지하려고 할 때 축소하는 것이 좋습니다. tempdb와 마찬가지로 로그 파일은 항상 확인해야합니다. 로그 파일을 항상 최소 크기로 유지하려면 로그 백업이 있는지 확인하십시오.

사용하지 않는 데이터베이스 파일

디스크에 사용되지 않고 연결되지 않은 데이터베이스 파일이 많고 공간을 낭비 할 수 있습니다. 다음에서 스크립트를 실행하십시오. SQL Server 해당 경로와 함께 이러한 파일을 식별하는 인스턴스입니다. 빠른 분석 후에도 해당 파일이 더 이상 필요하지 않다고 확신하는 경우 해당 파일을 삭제하고 공간을 절약하십시오.

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 데이터베이스 손상

디스크 공간을 모니터링하고 유지하는 것 외에도 디스크 상태도 모니터링하십시오. 비정상 디스크는 SQL Server 데이터베이스. 이 경우 다음과 같은 데이터베이스 복구 도구를 사용하십시오. DataNumen SQL Recovery 에 손상된 수정 SQL Server.

저자 소개 :

Neil Varley는 데이터 복구 전문가입니다. DataNumen, Inc.는 다음과 같은 데이터 복구 기술 분야의 세계적 리더입니다. Outlook 이메일 손상 복구 그리고 엑셀 복구 소프트웨어 제품. 자세한 내용은 WWW.datanumen.COM

지금 공유 :

댓글이 닫혀있다.