Səbəb Olduğu Kosmik Problemləri Necə Düzəltmək olar SQL Server

İndi paylaş:

Bir neçə dəfə SQL Server disklərdə yer probleminin səbəbi ola bilər. Bu yazıda bu problemin kök səbəblərinin nə olduğunu və onu necə həll edə biləcəyimizi görəcəyik.

Gürcüstanda Daşınmaz Əmlak Bir Pəncərə Həlliniz SQL Server yer lazımdır.

SQL-in Səbəb Olduğu Kosmik ProblemlərDəfələrlə SQL Server disk sahəsi tələb olunacaq. Bunun səbəbi verilənlər bazanızda artan məlumat və ya kəsilmiş jurnal faylları və ya silinməmiş ehtiyat nüsxə faylları və ya silinməmiş, istənməyən verilənlər bazası faylları ola bilər. Səbəb nə olursa olsun, a SQL Server, diskdə yer verilənlər bazası əməliyyatları üçün çox vacibdir.

Təmizləmə tapşırığı işləmir

SQL-in yerli texniki xidmət planlarından istifadə edirsinizsə, ehtiyat nüsxəsini çıxarmaq üçün SQL server verilənlər bazasında, həmin texniki xidmət planlarında olan təmizləmə modulunun öz vəzifəsini yerinə yetirməməsi ehtimalı ola bilər. Diskdə yer bitdikdə, köhnə ehtiyat fayllarının düzgün təmizlənmədiyini başa düşəcəksiniz. Təmizləmə modulunu texniki xidmət planına daxil edərdiniz. Bütün bunlara baxmayaraq, niyə işləmədiyini düşünürsünüz?

Yedek faylları silmək üçün düzgün qovluğu qeyd edib-etmədiyinizi yoxlayın, ehtiyat faylları silmək üçün düzgün fayl uzantısını qeyd edib-etmədiyinizi yoxlayın, nöqtə ilə cəhd edin. və fayl uzantısında nöqtə olmadan.

Log faylları verilənlər bazası fayllarından böyükdür

SQL Server DatabaseMəkan probleminin ən çox yayılmış səbəbi SQL Server nəzarətsiz jurnal faylları və tempdb fayllarıdır. SQL Service yenidən başladıqda tempdb orijinal ölçüyə qədər kiçilsə də, tempdb artımını izləmək və bütün disk sahəsini yeyəcək zaman onu kiçiltmək yaxşı bir təcrübədir. Tempdb-yə bənzər şəkildə, jurnal faylları həmişə yoxlanılmalıdır. Jurnal fayllarını həmişə minimum ölçüdə saxlamaq üçün jurnal ehtiyat nüsxənizin olduğundan əmin olun.

İstifadə edilməmiş verilənlər bazası faylları

Diskinizdə oturan və yer itirən çoxlu istifadə olunmamış və əlavə olunmamış verilənlər bazası faylları ola bilər. Skripti öz üzərində icra edin SQL Server bu cür faylları yolları ilə birlikdə müəyyən etmək üçün nümunə. Sürətli təhlildən sonra, bu faylların artıq lazım olmadığına hələ də əminsinizsə, onları silin və yerə qənaət edin.

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 Verilənlər bazası korrupsiyası

Disk sahəsini izləmək və saxlamaqla yanaşı, diskinizin sağlamlığına da nəzarət edin. Qeyri-sağlam diskinizi korlaya bilər SQL Server verilənlər bazaları. Bu baş verərsə, lütfən verilənlər bazası bərpa alətindən istifadə edin DataNumen SQL Recovery üçün xarab düzəldin SQL Server.

Müəllif Giriş:

Neil Varley məlumatların bərpası üzrə mütəxəssisdir DataNumendaxil olmaqla məlumatların bərpası texnologiyaları üzrə dünya lideri olan , Inc Outlook e-poçt korrupsiyasını təmir edin və excel bərpa proqram məhsulları. Ətraflı məlumat üçün ziyarət edin www.datanumen.com

İndi paylaş:

Şərhlər bağlıdır.