여러번 SQL Server 디스크 공간 문제의 원인 일 수 있습니다. 이 기사에서는이 문제의 근본 원인과 해결 방법을 살펴 봅니다.
너의 SQL Server 공간이 필요합니다.
여러 번 SQL Server 디스크 공간이 필요합니다. 이는 데이터베이스 내부의 데이터 증가, 압축 해제 된 로그 파일 또는 삭제되지 않은 백업 파일 또는 삭제되지 않은 원치 않는 데이터베이스 파일 때문일 수 있습니다. 이유가 무엇이든간에 SQL Server, 디스크 공간은 데이터베이스 트랜잭션에 매우 중요합니다.
정리 작업이 작동하지 않음
SQL의 기본 유지 관리 계획을 사용하여 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