Sqlshack

SQL-tietokannan eheyden tarkistus on yksi tietokannan ylläpitäjän tärkeimmistä ja tärkeimmistä tehtävistä. Tietokannan eheystehtävä tarkistaa kaikkien tietokannan objektien ja indeksien rakenteellisen eheyden ja kohdentamisen. Eheystarkistukset voidaan suorittaa käyttämällä DBCC CheckDB-komentoa. Tietokannan korruption tunnistamiseen käytetään komentoa CheckDB. Komento suorittaa seuraavat toiminnot tietokantaan.

  1. suorittaa DBCC: n TARKISTUSTAULUKON jokaisessa taulukossa ja näkymässä
  2. suorittaa DBCC: n TARKISTUSTAULUKON tietokannoissa
  3. suorittaa DBCC: n TARKISTUSTAULUKON tietokannoissa
  4. validoi palvelunvälittäjän tiedot
  5. validoi indeksoitujen näkymien sisällön
  6. voit lukea DBCC checkdb (Transact-SQL) saadaksesi lisätietoja DBCC checkdb-komennosta.

    yleensä DBAs Luo mukautettuja skriptejä tietokantojen korruption tunnistamiseksi. Mutta, jos työskentelet useita tietokantoja, se tulee ikävä tarkistaa lokit luoma DBCC CheckDB komento. Joten olen luonut SQL tallennettu menettely, joka suorittaa kaikissa tietokannoissa, ja jos se löytää johdonmukaisuus virheitä, se lähettää tiedot DBA joukkue.

    edellisessä artikkelissa, automatisoida SQL-tietokannan varmuuskopiot Windows Task Scheduler, olin selittänyt, miten voisimme automatisoida prosessin luoda täydellinen ja ero varmuuskopiointi SQL-tietokannan palautettu SQL server express edition. Tässä artikkelissa kerrotaan, miten voimme automatisoida SQL-tietokannan johdonmukaisuuden tarkistuksen, joka on luotu SQL Server express edition-versiossa. Olen ladannut näytetietokannan tästä. Olen asentanut SQL Server Express edition ja palauttanut tietokannan käyttäen seuraavaa komentoa:

    1
    2
    3
    4
    5
    6
    7

    käytä
    mene
    Palauta tietokanta levyltä = N ” C:\SQL Backup\Demokrruptmetadata2008r2.bak ”
    WITH FILE = 1,
    MOVE N’ Democorruptmetadata ”TO N” C:\Program tiedostot \ Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL \ DATA \ Demokrruptmetadata.mdf”,
    MOVE N ’Democorruptmetadata_log” TO N ” C:\Program tiedostot \ Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL \ DATA \ Demokrruptmetadata_log.ldf”,
    NOUNLOAD, STATS = 5

    kun tietokanta on palautettu, ajetaan DBCC CheckDB komento tarkastella virheitä.

    1
    2
    3
    4
    5

    aseta nocount on
    GO
    use master
    GO
    DBCC checkdb (Demokrruptmetadata) with all_errormsgs, no_infomsgs

    SQL-tietokannan Johdonmukaisuusvirhe

    kuten yllä olevasta kuvasta näkyy, tietokanta on vioittunut ja johdonmukaisuuden tarkistus-komennossa on raportoitu virheitä. Suorittaakseni johdonmukaisuuden tarkistuksen, olen luonut tallennetun menettelyn, että

    1. Suorita johdonmukaisuuden tarkistus kaikissa SQL-tietokannoissa, ja jos se löytää johdonmukaisuuden virheitä, se lisää nämä virheet temp-taulukkoon
    2. Pura viesti temp-taulukosta ja lähetä HTML-muotoinen Sähköposti DBA-tiimille

    tallennetun menettelyn koodi on esitetty alla:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85

    USE master
    GO
    CREATE PROCEDURE Sp_db_integrity_check
    AS
    BEGIN
    DECLARE @DBName VARCHAR(150)
    DECLARE @dbcccommand NVARCHAR(max)
    DECLARE @DBcount INT
    DECLARE @i INT = 0
    CREATE TABLE #errormsgs
    (
    error INT NULL,
    level INT NULL,
    state INT NULL,
    messagetext VARCHAR (7000) NULL,
    repairlevel INT NULL,
    status INT NULL,
    dbid INT NULL,
    dbfragid INT NULL,
    objectid INT NULL,
    indexid INT NULL,
    partitionid INT NULL,
    allocunitid INT NULL,
    riddbid INT NULL,
    ridpruid INT NULL,
    INT NULL,
    page INT NULL,
    slot INT NULL,
    refdbid INT NULL,
    refpruid INT NULL,
    reffile INT NULL,
    refpage INT NULL,
    refslot INT NULL,
    allocation INT NULL,
    )
    CREATE TABLE #userdatabases
    (
    nimi VARCHAR(500)
    )
    aseta # userdatabases
    valitse nimi
    SYS: stä.tietokannat
    missä tietokanta_id > 4
    SET @DBcount=(SELECT Count(1)
    FROM #userdatabases)
    WHILE ( @DBcount > @i )
    BEGIN
    SET @DBName = (SELECT TOP 1 NAME
    FROM #userdatabases)
    SET @DBCCCOMMAND= ” DBCC checkdb (”+@dbname
    +”) with no_infomsgs, all_errormsgs,Tableresults ”
    insert into #errormsgs
    exec (”DBCC CHECKDB (”+@DBNAME +
    ”) with no_infomsgs, all_errormsgs,tableresults”)
    delete from #userdatabases
    where name = @DBName
    SET @i=@i + 1
    END
    DROP TABLE #userdatabases
    END
    –select MessageText from #errormsgs
    DECLAR @subject NVARCHAR(max)
    DECLAR @tablhtml nvarchar(Max)
    set @subject = ”database consistancy check report for server :’
    + @@servername
    SET @tableHTML =
    ’ <html> <Body> <style type=”text/css”> table {font-size:9.0 pt;font-family:verdana;text-align:left;} tr {text-align:left;} h3 { display: block; font-size: 15.0 pt; kirjasimen paino: lihavoitu; kirjasinperhe: verdana; teksti-align: vasen; } < / tyyli> <H3>tietokannan Konsistenssitarkistus palvelimella’
    + @@servername + ”< / H3> ”+ N ” < taulukkoraja=”1″>’
    + N ’ <tr>< TH>MessageText< / TH> < > korruptoitunut tietokanta< / TH>< / tr>’
    + Cast((valitse Isnull(messagetext, ”) nimellä ”TD”,”, Isnull(
    Db_name(dbid),”) nimellä ”TD”,”, Isnull(repairlevel,”) nimellä ” TD ”
    , ” FROM #errormsgs for xml path (’tr’), root) AS NVARCHAR(
    max))
    + n ’</taulukko> </HTML> < / elin>’
    EXEC msdb..Sp_send_dbmail
    @profile_name = ”DBMailProfile”,
    @receivers = ”ni*********[email protected]’,
    @subject = @subject,
    @importance = ”High”,
    @body = @tableHTML,
    @body_format = ”HTML’;

    kuten tiedät, SQL Server Express edition ei tue tietokantapostia, mutta voit määrittää tietokantapostin T-SQL-kyselyillä. Voit lukea tämän artikkelin, tietokanta Mail kokoonpano SQL Server Express edition ymmärtää prosessin yksityiskohtaisesti.

    SQL Server Express edition ei tue SQL Server-agentteja, joten käytämme Windows-tehtävää eriytettynä. Windows schedular voi suorittaa komentojonotiedoston, joten olen luonut komentojonotiedoston, joka suorittaa tallennetun menettelyn sqlcmd-komennolla. Komentojonotiedoston koodi on seuraava.

    1
    sqlcmd-s Nisarg-PC\sqlexpress-Q ”execute sp_DB_Integrity_check” – d DBATools

    määritä komento tekstieditorissa ja tallenna tiedosto nimellä *.bat-tiedosto. Nyt, olkaamme luoda tehtävän windows task schedular. Avaa Ohjauspaneeli avaa järjestelmänvalvojan työkalut avaa Tehtävien ajoitus. Valitse ajoitetussa tehtävässä luo perustehtävä. Määritä ensimmäisessä näytössä tehtävän nimi ja kuvaus.

    luo perustehtävän näyttö

    luo perustehtävän näyttö

    tietokannan johdonmukaisuuden tarkistus suoritetaan joka viikko, joten määritä viikoittain tehtävän Käynnistäjänäytössä.

     tehtävän käynnistysseula

    Tehtäväkäynnistysnäyttö

    skripti tulee suorittaa joka sunnuntai klo 1:00, joten määritä 01:00:00 Aloitustekstissä. Työ tulee suorittaa kerran viikossa, joten määritä 1 uudelleen jokaisessa tekstilaatikossa. Valitse sunnuntai päivien listasta.

    viikkoaikataulun asetusnäyttö

    Weekly schedule configuration screen

    suoritamme komentojonon tietokannan korruption tarkistamiseksi, joten valitse Käynnistä ohjelma-asetus Toimintonäytöstä.

     Tehtävänäyttö

    tehtävän toimintonäyttö

    käynnistettäessä ohjelmanäyttö määrittää komentojonotiedoston koko polun. Löydät tiedoston selaamalla hakemistoja. Meidän tapauksessamme, komentojonotiedosto on luotu C:\DatabaseScripts, joten olen antanut erän Tiedoston koko polku. Varmista, että käyttäjällä, joka on luonut aikataulun, on oltava luku-kirjoitus-pääsy hakemistoon, jossa komentojonotiedosto on luotu. Klikkaa Seuraava.

    Aloita ohjelmanäyttö

    Käynnistä ohjelmanäyttö

    Yhteenvetonäytössä voit tarkastella luodun tehtävän yksityiskohtia. Klikkaa Valmis.

     yhteenvetonäyttö

    yhteenvetoruutu

    voit tarkastella tehtävää tehtävänjako-ikkunoissa. Nyt, testataanpa määritetty tehtävä. Voit tehdä sen napsauttamalla hiiren kakkospainikkeella Tarkista tietokannan eheys ja valitsemalla Suorita. Vaihtoehtoisesti, klikkaa linkkiä nimeltään Run oikealta-pan.

    Näytä tehtävähistoria

    johdonmukaisuuden tarkistusprosessi alkaa.

    DBCC CheckDB-prosessi alkaa

    prosessi saatiin onnistuneesti päätökseen. Voit tarkistaa tiedot tehtävän aikaistetun Tehtävähistoria-välilehdeltä.

    tehtävän suoritushistoria

    olemme palauttaneet vioittuneen SQL-tietokannan, joten olemme saaneet sähköpostin, jossa on tietokannan johdonmukaisuusvirheitä. Sähköposti näyttää seuraavan kuvan.

    Johdonmukaisuusvirhe Sähköposti

    Yhteenveto

    tässä artikkelissa selitettiin, miten voimme tunnistaa tietokannan korruption käyttämällä komentojono-skriptiä, joka on ajoitettu Windows-tehtävän aikatauluun. Tämä artikkeli voi olla hyödyllinen lähtötason tietokannan ylläpitäjät, jotka haluavat automatisoida tietokannan ylläpitotehtäviä SQL-tietokannan luotu tai palautettu SQL server express edition. Minun seuraava artikkeli,opimme, miten voimme automatisoida indeksin ylläpito SQL-tietokannan luotu SQL Server express edition Windows task scheduler. Pysykää kuulolla!

    • tekijä
    • tuoreita viestejä
    Nisarg Upadhyay
    Nisarg Upadhyay on SQL Server-tietokannan ylläpitäjä ja Microsoft-sertifioitu ammattilainen, jolla on yli 8 vuoden kokemus SQL Server-hallinnosta ja 2 vuoden kokemus Oracle 10g-tietokannan hallinnasta.
    hänellä on asiantuntemusta tietokantojen suunnittelussa, suorituskyvyn virityksessä, varmuuskopioinnissa ja palautuksessa, HA-ja DR-asennuksissa, tietokantojen migraatioissa ja päivityksissä. Hän on suorittanut B. Techin tutkinnon Ganpatin yliopistossa. Hän on tavoitettavissa [email protected]

    Nisarg Upadhyay
    uusimmat viestit Nisarg Upadhyay (Näytä kaikki)
    • miten siirtää taulukoita toiseen filegroup of a SQL database-December 14, 2021
    • Configure ODBC Drivers for Oracle 19c-December 9, 2021
    • Configure a Linked Server between SQL Server and PostgreSQL using ODBC drivers-December 6, 2021

Write a Comment

Sähköpostiosoitettasi ei julkaista.