MS SQL Server: Thaub qab ntawm steroids

Tos! Tos! Muaj tseeb, qhov no tsis yog lwm tsab xov xwm hais txog hom SQL Server thaub qab. Kuv yuav tsis txawm tham txog qhov sib txawv ntawm cov qauv rov qab thiab yuav ua li cas nrog lub cav overgrown.

Tej zaum (tsuas yog kab tias), tom qab nyeem cov ntawv no, koj yuav tuaj yeem paub tseeb tias cov thaub qab uas raug tshem tawm ntawm koj siv tus qauv txhais tau tias yuav raug tshem tawm tag kis hmo ntuj, zoo, 1.5 npaug sai dua. Thiab tsuas yog vim qhov tseeb tias koj siv me ntsis ntxiv BACKUP DATABASE tsis.

Yog hais tias cov ntsiab lus ntawm tus ncej yog pom tseeb rau koj, kuv thov txim. Kuv nyeem txhua yam uas Google tau txais rau cov kab lus "habr sql server backup", thiab tsis yog ib tsab xov xwm kuv pom ib qho kev hais txog qhov tseeb tias lub sijhawm thaub qab tuaj yeem cuam tshuam rau kev siv cov kev txwv.

Kuv yuav tam sim ntawd kos koj cov xim rau cov lus ntawm Alexander Gladchenko (@mssqlhelp):

Tsis txhob hloov BUFFERCOUNT, BLOCKSIZE, MAXTRANSFERSIZE tsis nyob hauv ntau lawm. Lawv tsuas yog tsim los sau cov ntawv zoo li no xwb. Hauv kev xyaum, koj yuav tshem tau cov teeb meem nco tsis muaj sijhawm.

Nws yuav, ntawm chav kawm, yuav txias ua tus ntse tshaj plaws thiab tshaj tawm cov ntsiab lus tshwj xeeb, tab sis, hmoov tsis, qhov no tsis yog qhov teeb meem. Muaj ob qho lus Askiv thiab lus Lavxias / lus tshaj tawm (Kuv ib txwm tsis meej pem txog qhov yuav hu lawv li cas) mob siab rau lub ntsiab lus no. Nov yog qee qhov kuv tuaj hla: sij hawm, ob, peb (ntawm sql.ru).

Yog li, pib nrog, Kuv yuav xa ib qho me ntsis stripped-down BACKUP syntax los ntawm MSDN (los ntawm txoj kev, kuv tau sau saum toj no hais txog BACKUP DATABASE, tab sis tag nrho cov no siv rau ob qho tib si log thaub qab thiab sib txawv thaub qab, tab sis tej zaum muaj qhov pom tseeb tsawg dua):

BACKUP DATABASE { database_name | @database_name_var }
  TO <backup_device> [ ,...n ]
  <...>
  [ WITH { <...>
           | <general_WITH_options> [ ,...n ] } ]
[;]

<general_WITH_options> [ ,...n ]::=
<...>
--Media Set Options
 <...>
 | BLOCKSIZE = { blocksize | @blocksize_variable }

--Data Transfer Options
   BUFFERCOUNT = { buffercount | @buffercount_variable }
 | MAXTRANSFERSIZE = { maxtransfersize | @maxtransfersize_variable }
<...>

<…> - nws txhais tau hais tias muaj ib yam dab tsi nyob ntawd, tab sis kuv tshem tawm nws vim tam sim no nws tsis cuam tshuam rau lub ntsiab lus.

Yuav ua li cas koj feem ntau coj ib tug thaub qab? Lawv "qhia" yuav ua li cas thiaj li rov qab tau cov ntaub ntawv hauv ntau lab? Feem ntau, yog tias kuv xav tau ua ib zaug thaub qab ntawm qee qhov tsis loj heev, kuv yuav cia li sau qee yam zoo li no:

BACKUP DATABASE smth
TO DISK = 'D:Backupsmth.bak'
WITH STATS = 10, CHECKSUM, COMPRESSION, COPY_ONLY;
--ладно, CHECKSUM я написал только чтобы казаться умнее

Thiab, feem ntau, tej zaum 75-90% ntawm tag nrho cov kev txwv uas feem ntau tau hais hauv cov lus hais txog kev thaub qab tau teev tseg ntawm no. Zoo, kuj tseem muaj INIT, SKIP. Koj puas tau mus xyuas MSDN? Koj puas tau pom tias muaj kev xaiv rau ib thiab ib nrab ntawm cov ntxaij vab tshaus? kuv kuj pom...

Tej zaum koj twb paub lawm hais tias ntxiv peb yuav tham txog peb yam uas tseem nyob rau hauv thawj block ntawm code - BLOCKSIZE, BUFFERCOUNT thiab MAXTRANSFERSIZE. Nov yog lawv cov lus piav qhia los ntawm MSDN:

LOCKSIZE = { blocksize | @ blocksize_variable } - qhia txog lub cev thaiv qhov loj hauv bytes. Qhov ntau thiab tsawg txhawb yog 512, 1024, 2048, 4096, 8192, 16, 384, thiab 32 bytes (768 KB). Tus nqi pib yog 65 rau cov khoom siv kab xev thiab 536 rau lwm yam khoom siv. Feem ntau qhov kev ntsuas no tsis tsim nyog vim tias BACKUP nqe lus cia li xaiv qhov tsim nyog thaiv qhov loj me rau lub cuab yeej. Teem lub block loj qhia meej overrides qhov tsis siv neeg thaiv qhov loj xaiv.

BUFFERCOUNT = { tsis pub | @ buffercount_variable } - Txhais tag nrho cov naj npawb ntawm I / O buffers uas yuav siv rau kev ua haujlwm thaub qab. Koj tuaj yeem hais qhia tus lej zoo, tab sis ntau tus buffers tuaj yeem ua rau muaj qhov tsis nco qab vim qhov chaw nyob virtual ntau dhau hauv cov txheej txheem Sqlservr.exe.

Tag nrho qhov chaw siv los ntawm buffers yog txiav txim los ntawm cov qauv hauv qab no: BUFFERCOUNT * MAXTRANSFERSIZE.

MAXTRANSFERSIZE = { maxtransfersize | @ maxtransfersize_variable } qhia txog cov ntaub ntawv loj tshaj plaws, hauv bytes, sib pauv ntawm SQL Server thiab cov txheej txheem thaub qab. Ntau ntawm 65 bytes (536 KB) txog 64 bytes (4 MB) tau txais kev txhawb nqa.

Kuv cog lus - Kuv tau nyeem qhov no ua ntej, tab sis nws yeej tsis tshwm sim rau kuv ntau npaum li cas ntawm kev cuam tshuam lawv tuaj yeem cuam tshuam rau kev tsim khoom. Ntxiv mus, pom tau tias, kuv yuav tsum tau ua ib hom "tawm los" thiab lees tias txawm tias tam sim no kuv tsis nkag siab tias lawv ua dab tsi. Tej zaum kuv yuav tsum tau nyeem ntau ntxiv txog buffered I / O thiab ua haujlwm nrog lub hard drive. Muaj ib hnub kuv yuav ua qhov no, tab sis rau tam sim no kuv tuaj yeem sau ib tsab ntawv uas yuav xyuas seb cov txiaj ntsig no cuam tshuam li cas rau qhov ceev ntawm qhov kev thaub qab.

Kuv tau tsim cov ntaub ntawv me me, kwv yees li 10 GB hauv qhov loj me, muab tso rau ntawm SSD, thiab muab cov npe rau thaub qab ntawm HDD.

Kuv tsim lub rooj ib ntus los khaws cov txiaj ntsig (Kuv tsis muaj nws ib ntus, yog li kuv tuaj yeem nkag mus rau hauv cov txiaj ntsig tau nthuav dav, tab sis koj txiav txim siab rau koj tus kheej):

DROP TABLE IF EXISTS ##bt_results; 

CREATE TABLE ##bt_results (
    id              int IDENTITY (1, 1) PRIMARY KEY,
    start_date      datetime NOT NULL,
    finish_date     datetime NOT NULL,
    backup_size     bigint NOT NULL,
    compressed_size bigint,
    block_size      int,
    buffer_count    int,
    transfer_size   int
);

Lub hauv paus ntsiab lus ntawm tsab ntawv yog qhov yooj yim - nested loops, txhua qhov kev hloov pauv tus nqi ntawm ib qho kev ntsuas, ntxig cov kev txwv no rau hauv BACKUP hais kom ua, txuag cov ntaub ntawv kawg nrog keeb kwm los ntawm msdb.dbo.backupset, rho tawm cov ntaub ntawv thaub qab thiab rov ua dua tom ntej . Txij li thaum cov ntaub ntawv thaub qab ua tiav yog muab los ntawm lub backupset, qhov tseeb yog me ntsis ploj (tsis muaj feem ntawm vib nas this), tab sis peb yuav muaj sia nyob qhov no.

Ua ntej koj yuav tsum pab kom xp_cmdshell tshem tawm cov thaub qab (tom qab ntawd tsis txhob hnov ​​​​qab kaw nws yog tias koj tsis xav tau):

EXEC sp_configure 'show advanced options', 1;  
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;
EXEC sp_configure 'show advanced options', 0;  
GO

Zoo, ua tau:

DECLARE @tmplt AS nvarchar(max) = N'
BACKUP DATABASE [bt]
TO DISK = ''D:SQLServerbackupbt.bak''
WITH 
    COMPRESSION,
    BLOCKSIZE = {bs},
    BUFFERCOUNT = {bc},
    MAXTRANSFERSIZE = {ts}';

DECLARE @sql AS nvarchar(max);

/* BLOCKSIZE values */
DECLARE @bs     int = 4096, 
        @max_bs int = 65536;

/* BUFFERCOUNT values */
DECLARE @bc     int = 7,
        @min_bc int = 7,
        @max_bc int = 800;

/* MAXTRANSFERSIZE values */
DECLARE @ts     int = 524288,   --512KB, default = 1024KB
        @min_ts int = 524288,
        @max_ts int = 4194304;  --4MB

SELECT TOP 1 
    @bs = COALESCE (block_size, 4096), 
    @bc = COALESCE (buffer_count, 7), 
    @ts = COALESCE (transfer_size, 524288)
FROM ##bt_results
ORDER BY id DESC;

WHILE (@bs <= @max_bs)
BEGIN
    WHILE (@bc <= @max_bc)
    BEGIN       
        WHILE (@ts <= @max_ts)
        BEGIN
            SET @sql = REPLACE (REPLACE (REPLACE(@tmplt, N'{bs}', CAST(@bs AS nvarchar(50))), N'{bc}', CAST (@bc AS nvarchar(50))), N'{ts}', CAST (@ts AS nvarchar(50)));

            EXEC (@sql);

            INSERT INTO ##bt_results (start_date, finish_date, backup_size, compressed_size, block_size, buffer_count, transfer_size)
            SELECT TOP 1 backup_start_date, backup_finish_date, backup_size, compressed_backup_size,  @bs, @bc, @ts 
            FROM msdb.dbo.backupset
            ORDER BY backup_set_id DESC;

            EXEC xp_cmdshell 'del "D:SQLServerbackupbt.bak"', no_output;

            SET @ts += @ts;
        END
        
        SET @bc += @bc;
        SET @ts = @min_ts;

        WAITFOR DELAY '00:00:05';
    END

    SET @bs += @bs;
    SET @bc = @min_bc;
    SET @ts = @min_ts;
END

Yog tias koj dheev xav tau kev qhia meej txog qhov tshwm sim ntawm no, sau rau hauv cov lus lossis PM. Txog tam sim no, kuv tsuas yog qhia rau koj txog cov kev txwv uas kuv muab tso rau hauv BACKUP DATABASE.

Rau BLOCKSIZE peb muaj "kaw" cov npe ntawm qhov tseem ceeb, thiab kuv tsis tau ua qhov thaub qab nrog BLOCKSIZE < 4KB. MAXTRANSFERSIZE txhua tus lej uas yog ntau yam ntawm 64KB - los ntawm 64KB rau 4MB. Lub neej ntawd ntawm kuv qhov system yog 1024KB, kuv coj 512 - 1024 - 2048 - 4096.

Nws nyuaj dua nrog BUFFERCOUNT - nws tuaj yeem yog tus lej zoo, tab sis qhov txuas tau hais Nws suav li cas hauv BACKUP DATABASE thiab vim li cas cov txiaj ntsig loj yog qhov txaus ntshai?. Nws kuj hais tias yuav ua li cas kom tau txais cov ntaub ntawv hais txog qhov twg BUFFERCOUNT qhov thaub qab tau ua tiav nrog - rau kuv nws yog 7. Tsis muaj qhov taw qhia hauv kev txo nws, thiab qhov txwv sab saud tau tshawb pom - nrog BUFFERCOUNT = 896 thiab MAXTRANSFERSIZE = 4194304 lub thaub qab poob nrog ib qho yuam kev (txog qhov uas sau rau hauv qhov txuas saum toj no):

Msg 3013, Theem 16, Xeev 1, Kab 7 BACKUP DATABASE tau txiav tawm txawv txav.

Msg 701, Theem 17, Xeev 123, Kab 7 Muaj qhov tsis txaus lub cim xeeb hauv cov peev txheej 'default' los khiav cov lus nug no.

Rau kev sib piv, kuv yuav xub qhia cov txiaj ntsig ntawm kev khiav ib qho thaub qab yam tsis tau hais meej txog qhov tsis muaj txhua:

BACKUP DATABASE [bt]
TO DISK = 'D:SQLServerbackupbt.bak'
WITH COMPRESSION;

Zoo, thaub qab thiab thaub qab:

Ua tiav 1070072 nplooj ntawv rau database 'bt', cov ntaub ntawv 'bt' ntawm cov ntaub ntawv 1.

Ua tiav 2 nplooj ntawv rau database 'bt', cov ntaub ntawv 'bt_log' ntawm cov ntaub ntawv 1.

BACKUP DATABASE ua tiav 1070074 nplooj ntawv hauv 53.171 vib nas this (157.227 MB/sec).

Tsab ntawv nws tus kheej, kuaj cov tsis, ua haujlwm hauv ob peb teev, txhua qhov ntsuas tau nyob hauv google spreadsheet. Thiab ntawm no yog xaiv cov txiaj ntsig nrog peb lub sijhawm ua tiav zoo tshaj plaws (Kuv tau sim ua cov duab zoo, tab sis hauv kev tshaj tawm kuv yuav tau ua nrog lub rooj, thiab hauv cov lus. @mixsture ntxiv graphics zoo heev).

SELECT TOP 7 WITH TIES 
    compressed_size, 
    block_size, 
    buffer_count, 
    transfer_size,
    DATEDIFF(SECOND, start_date, finish_date) AS backup_time_sec
FROM ##bt_results
ORDER BY backup_time_sec ASC;

MS SQL Server: Thaub qab ntawm steroids

Nco ntsoov, ib qho tseem ceeb heev los ntawm @mixsture los ntawm kev tawm tswv yim:

Peb tuaj yeem ntseeg tau hais tias kev sib raug zoo ntawm qhov tsis sib xws thiab kev ceev nrawm hauv cov kab no ntawm qhov tseem ceeb yog random, tsis muaj qauv. Tab sis txav deb ntawm cov teeb tsa built-in pom tseeb tau muaj txiaj ntsig zoo rau qhov tshwm sim

Cov. Tsuas yog los ntawm kev tswj hwm tus qauv BACKUP tsis yog qhov nce 2-fold hauv lub sijhawm tshem tawm thaub qab: 26 vib nas this, piv rau 53 thaum pib. Qhov ntawd tsis phem, txoj cai? Tab sis peb yuav tsum pom dab tsi tshwm sim nrog kev kho dua tshiab. Yuav ua li cas yog tias tam sim no siv sijhawm ntev dua 4 zaug kom rov zoo?

Ua ntej, cia peb ntsuas ntev npaum li cas nws yuav siv sij hawm los kho qhov thaub qab nrog qhov teeb meem qub:

RESTORE DATABASE [bt]
FROM DISK = 'D:SQLServerbackupbt.bak'
WITH REPLACE, RECOVERY;

Zoo, koj tus kheej paub tias, txoj hauv kev muaj, hloov tsis hloov, rov qab tsis zoo. Thiab kuv ua nws zoo li no:

Ua tiav 1070072 nplooj ntawv rau database 'bt', cov ntaub ntawv 'bt' ntawm cov ntaub ntawv 1.

Ua tiav 2 nplooj ntawv rau database 'bt', cov ntaub ntawv 'bt_log' ntawm cov ntaub ntawv 1.

RESTORE DATABASE tau ua tiav 1070074 nplooj ntawv hauv 40.752 vib nas this (205.141 MB/sec).

Tam sim no kuv mam li sim rov qab cov thaub qab uas tau hloov pauv BLOCKSIZE, BUFFERCOUNT thiab MAXTRANSFERSIZE.

BLOCKSIZE = 16384, BUFFERCOUNT = 224, MAXTRANSFERSIZE = 4194304

RESTORE DATABASE tau ua tiav 1070074 nplooj ntawv hauv 32.283 vib nas this (258.958 MB/sec).

BLOCKSIZE = 4096, BUFFERCOUNT = 448, MAXTRANSFERSIZE = 4194304

RESTORE DATABASE tau ua tiav 1070074 nplooj ntawv hauv 32.682 vib nas this (255.796 MB/sec).

BLOCKSIZE = 16384, BUFFERCOUNT = 448, MAXTRANSFERSIZE = 2097152

RESTORE DATABASE tau ua tiav 1070074 nplooj ntawv hauv 32.091 vib nas this (260.507 MB/sec).

BLOCKSIZE = 4096, BUFFERCOUNT = 56, MAXTRANSFERSIZE = 4194304

RESTORE DATABASE tau ua tiav 1070074 nplooj ntawv hauv 32.401 vib nas this (258.015 MB/sec).

Cov lus RESTORE DATABASE tsis hloov pauv thaum rov qab los; cov kev txwv no tsis tau teev tseg hauv nws; SQL Server nws tus kheej txiav txim siab lawv los ntawm kev thaub qab. Thiab nws yog qhov tseeb tias txawm tias muaj kev rov qab los muaj peev xwm nce - yuav luag 20% ​​sai dua (Ua kom ncaj ncees, kuv tsis tau siv sijhawm ntau rau kev rov qab los, kuv tau dhau los ntawm ntau qhov "ceev tshaj plaws" thaub qab thiab ua kom paub tseeb tias tsis muaj kev puas tsuaj.).

Tsuas yog nyob rau hauv rooj plaub, cia kuv qhia meej tias cov no tsis yog qee qhov tsis zoo rau txhua tus. Koj tsuas tuaj yeem tau txais qhov tsis zoo rau koj tus kheej los ntawm kev sim. Kuv tau txais cov txiaj ntsig no, koj yuav tau txais qhov sib txawv. Tab sis koj pom tias koj tuaj yeem "tune" koj cov ntaub ntawv thaub qab thiab lawv tuaj yeem tsim thiab xa tawm sai dua.

Kuv kuj xav kom koj nyeem cov ntaub ntawv tag nrho, vim tias tej zaum yuav muaj cov nuances tshwj xeeb rau koj lub cev.

Txij li thaum kuv pib sau txog kev thaub qab, kuv xav tam sim ntawd sau txog ib qho ntxiv "kev ua kom zoo", uas yog ntau dua li "tso" tsis (raws li kuv nkag siab, nws yog siv los ntawm tsawg kawg qee qhov kev siv hluav taws xob backup, tej zaum ua ke nrog cov kev txwv. tau piav qhia ua ntej), tab sis nws tseem tsis tau piav qhia ntawm Habre thiab.

Yog tias peb saib ntawm kab thib ob hauv cov ntaub ntawv, txoj cai hauv BACKUP DATABASE, peb pom:

TO <backup_device> [ ,...n ]

Koj xav li cas yuav tshwm sim yog tias koj qhia ob peb backup_devices? Lub syntax tso cai rau nws. Thiab qhov nthuav heev yuav tshwm sim - qhov thaub qab yuav tsuas yog "kis" hla ntau lub cuab yeej. Cov. txhua "device" ib tus zuj zus yuav tsis muaj txiaj ntsig, poob ib qho, poob tag nrho cov thaub qab. Tab sis li cas smearing yuav cuam tshuam rau backup ceev?

Cia peb sim ua ib qho thaub qab ntawm ob "cov khoom siv" uas nyob ib sab ntawm ib sab hauv tib lub nplaub tshev:

BACKUP DATABASE [bt]
TO 
    DISK = 'D:SQLServerbackupbt1.bak',
    DISK = 'D:SQLServerbackupbt2.bak'   
WITH COMPRESSION;

Leej Txiv ntawm lub ntiaj teb no, yog vim li cas thiaj ua li no?

Ua tiav 1070072 nplooj ntawv rau database 'bt', cov ntaub ntawv 'bt' ntawm cov ntaub ntawv 1.

Ua tiav 2 nplooj ntawv rau database 'bt', cov ntaub ntawv 'bt'log' ntawm cov ntaub ntawv 1.

BACKUP DATABASE ua tiav 1070074 nplooj ntawv hauv 40.092 vib nas this (208.519 MB/sec).

Puas yog qhov thaub qab tau dhau los ua 25% sai dua tawm ntawm xiav? Yuav ua li cas yog tias peb ntxiv ob peb yam khoom siv ntxiv?

BACKUP DATABASE [bt]
TO 
    DISK = 'D:SQLServerbackupbt1.bak',
    DISK = 'D:SQLServerbackupbt2.bak',
    DISK = 'D:SQLServerbackupbt3.bak',
    DISK = 'D:SQLServerbackupbt4.bak'
WITH COMPRESSION;

BACKUP DATABASE ua tiav 1070074 nplooj ntawv hauv 34.234 vib nas this (244.200 MB/sec).

Nyob rau hauv tag nrho, qhov nce yog hais txog 35% ntawm lub sij hawm ntawm kev noj ib tug thaub qab tsuas yog vim lub fact tias cov backup yog sau rau 4 cov ntaub ntawv ntawm ib tug disk ib zaug. Kuv tshawb xyuas tus lej loj dua - tsis muaj qhov nce ntawm kuv lub laptop, qhov zoo - 4 khoom siv. Rau koj - Kuv tsis paub, koj yuav tsum tau kuaj. Zoo, los ntawm txoj kev, yog tias koj muaj cov cuab yeej no - cov no yog cov disks sib txawv tiag tiag, zoo siab, qhov nce yuav tsum tseem ceeb dua.

Tam sim no cia peb tham txog yuav ua li cas kho qhov kev zoo siab no. Ua li no, koj yuav tau hloov cov lus txib rov qab thiab sau tag nrho cov khoom siv:

RESTORE DATABASE [bt]
FROM 
    DISK = 'D:SQLServerbackupbt1.bak',
    DISK = 'D:SQLServerbackupbt2.bak',
    DISK = 'D:SQLServerbackupbt3.bak',
    DISK = 'D:SQLServerbackupbt4.bak'
WITH REPLACE, RECOVERY;

RESTORE DATABASE tau ua tiav 1070074 nplooj ntawv hauv 38.027 vib nas this (219.842 MB/sec).

Me ntsis sai dua, tab sis qhov chaw ze, tsis tseem ceeb. Feem ntau, cov thaub qab raug tshem tawm sai dua thiab rov qab zoo li qub - kev vam meej? Raws li rau kuv, nws zoo heev. Qhov no yog ib qho tseem ceeb, yog li kuv rov hais dua - yog koj yog tias koj poob tsawg kawg yog ib qho ntawm cov ntaub ntawv no, koj poob tag nrho cov thaub qab.

Yog tias koj saib hauv lub cav ntawm cov ntaub ntawv thaub qab uas pom siv Trace Flags 3213 thiab 3605, koj yuav pom tias thaum thaub qab mus rau ntau lub cuab yeej, tsawg kawg tus lej ntawm BUFFERCOUNT nce. Tej zaum, koj tuaj yeem sim xaiv qhov tsis zoo tshaj plaws rau BUFFERCOUNT, BLOCKSIZE, MAXTRANSFERSIZE, tab sis kuv tsis ua tiav tam sim ntawd, thiab kuv tub nkees dhau los ua qhov kev sim no dua, tab sis rau ntau cov ntaub ntawv sib txawv. Thiab nws yog ib qho kev txaj muag ntawm lub log. Yog tias koj xav npaj cov kev sim no hauv tsev, nws tsis yooj yim rau remake tsab ntawv.

Thaum kawg, cia peb tham txog nqe. Yog tias cov thaub qab raug tshem tawm thaum ua ke nrog cov neeg siv kev ua haujlwm, koj yuav tsum tau ua lub luag haujlwm tseem ceeb hauv kev sim, vim tias yog tias cov thaub qab raug tshem tawm sai dua, cov disks raug strained ntau dua, cov khoom thauj ntawm lub processor nce (koj tseem yuav tsum tau compressed. nws ntawm ya), thiab raws li, tag nrho cov teb ntawm lub kaw lus txo.

Tsuas yog kidding, tab sis kuv nkag siab zoo kawg nkaus tias kuv tsis tau tshwm sim. Dab tsi yog sau saum toj no tsuas yog ua qauv qhia txog yuav ua li cas koj tuaj yeem xaiv qhov kev pom zoo rau kev siv thaub qab.

Nco ntsoov tias txhua yam koj ua yog ua tiav ntawm koj tus kheej txaus ntshai thiab pheej hmoo. Tshawb xyuas koj cov ntaub ntawv thaub qab thiab tsis txhob hnov ​​​​qab txog DBCC CHECKDB.

Tau qhov twg los: www.hab.com

Ntxiv ib saib