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.
- suorittaa DBCC: n TARKISTUSTAULUKON jokaisessa taulukossa ja näkymässä
- suorittaa DBCC: n TARKISTUSTAULUKON tietokannoissa
- suorittaa DBCC: n TARKISTUSTAULUKON tietokannoissa
- validoi palvelunvälittäjän tiedot
- validoi indeksoitujen näkymien sisällön
- Suorita johdonmukaisuuden tarkistus kaikissa SQL-tietokannoissa, ja jos se löytää johdonmukaisuuden virheitä, se lisää nämä virheet temp-taulukkoon
- Pura viesti temp-taulukosta ja lähetä HTML-muotoinen Sähköposti DBA-tiimille
- tekijä
- tuoreita viestejä
- 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
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
|
kuten yllä olevasta kuvasta näkyy, tietokanta on vioittunut ja johdonmukaisuuden tarkistus-komennossa on raportoitu virheitä. Suorittaakseni johdonmukaisuuden tarkistuksen, olen luonut tallennetun menettelyn, että
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.
tietokannan johdonmukaisuuden tarkistus suoritetaan joka viikko, joten määritä viikoittain tehtävän Käynnistäjänäytössä.
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.
suoritamme komentojonon tietokannan korruption tarkistamiseksi, joten valitse Käynnistä ohjelma-asetus Toimintonäytöstä.
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.
Yhteenvetonäytössä voit tarkastella luodun tehtävän yksityiskohtia. Klikkaa Valmis.
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.
johdonmukaisuuden tarkistusprosessi alkaa.
prosessi saatiin onnistuneesti päätökseen. Voit tarkistaa tiedot tehtävän aikaistetun Tehtävähistoria-välilehdeltä.
olemme palauttaneet vioittuneen SQL-tietokannan, joten olemme saaneet sähköpostin, jossa on tietokannan johdonmukaisuusvirheitä. Sähköposti näyttää seuraavan kuvan.
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!
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]