Кеңістіктегі мәселелерді қалай шешуге болады 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 дейін түзету бүлінген SQL Server.

Автордың кіріспесі:

Нил Варли - деректерді қалпына келтіру бойынша сарапшы DataNumen, Соның ішінде деректерді қалпына келтіру технологиялары бойынша әлемдік көшбасшы болып табылатын Inc. Outlook электрондық поштасының бұзылуын жөндеу және excel қалпына келтіру бағдарламалық жасақтама өнімдері. Қосымша ақпарат алу үшін кіріңіз WWW.datanumen.com

Қазір бөлісу:

Пікірлер жабылды.