Сансрын асуудлуудыг хэрхэн арилгах вэ SQL Server

Одоо хуваалцах:

Хэд хэдэн удаа SQL Server дискэн дээрх зай гаргах шалтгаан байж болох юм. Энэ нийтлэлийн гол шалтгаан нь юу вэ, үүнийг хэрхэн засах вэ гэдгийг бид энэ өгүүллээр үзэх болно.

Таны SQL Server орон зай хэрэгтэй.

SQL-ээс үүдэлтэй орон зайн асуудлуудОлон удаа SQL Server дискний зай хэрэгтэй болно. Энэ нь мэдээллийн баазынхаа доторх өгөгдлийн хэмжээ нэмэгдэж байгаатай холбоотой эсвэл задраагүй бүртгэлийн файлууд эсвэл устгагдаагүй нөөц файлууд эсвэл устгагдаагүй, хүсээгүй мэдээллийн баазын файлуудтай холбоотой байж болох юм. Шалтгаан нь ямар ч байсан хамаагүй SQL Server, өгөгдлийн сангийн гүйлгээ хийхэд дискэн дээрх зай маш чухал юм.

Цэвэрлэгээний ажил ажиллахгүй байна

Хэрэв та SQL-ийн уугуул засвар үйлчилгээний төлөвлөгөөг ашиглаж байгаа бол SQL server мэдээллийн сан, эдгээр засвар үйлчилгээний төлөвлөгөөнд байгаа цэвэрлэх модуль нь ажлаа хийхгүй байх магадлалтай байж магадгүй юм. Дискний зай дуусахад та хуучин нөөц файлуудыг сайтар цэвэрлээгүй гэдгийг ойлгох болно. Та цэвэрлэх модулийг засвар үйлчилгээний төлөвлөгөөнд оруулах байсан. Энэ бүхнээс үл хамааран яагаад ажиллахгүй байгааг та гайхаж байна уу?

Нөөц файлуудыг устгах зөв хавтасыг дурдсан эсэхээ, нөөц файлуудыг устгах зөв файлын өргөтгөлийн талаар дурдсан эсэхээ шалгаад цэгийг "" тэмдэглээд үзээрэй. мөн файлын өргөтгөлийн цэггүй.

Бүртгэлийн файлууд нь өгөгдлийн сангийн файлуудаас асар том юм

SQL Server Өгөгдлийн санОрон зайн асуудлын хамгийн түгээмэл шалтгаан SQL Server нь хяналтгүй бүртгэлийн файлууд болон tempdb файлууд юм. SQL үйлчилгээ дахин эхлэх бүрт tempdb нь анхны хэмжээндээ хүртэл агших боловч 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 to засах эвдэрсэн SQL Server.

Зохиогчийн танилцуулга:

Нил Варли бол мэдээлэл сэргээх мэргэжилтэн юм DataNumen, Үүнд мэдээлэл сэргээх технологиор дэлхийд тэргүүлэгч, Inc. Outlook имэйлийн гэмтлийг засах болон excel сэргээх програм хангамжийн бүтээгдэхүүнүүд. Дэлгэрэнгүй мэдээллийг авна уу WWW.datanumen.com

Одоо хуваалцах:

Тайлбарууд нь хаалттай байна.