DBCC kommandon - några odukomenterade (SQL 6.5)
Förord
I den här artikeln tänker jag berätta om några användbara odokumenterade DBCC kommandon, och hur du med hjälp av dem kan administrera och övervaka i SQL Server 6.5.Innehåll
»»
»
»
»
»
»
»
»
»
»
»
»
»
»
»
»
»
»
»
»
»
»
»
»
»
»
Användbara odokumenterade DBCC kommandon i SQL Server 6.5
av Alexander Chigrik
DBCC är en förkortning för ”Database Console Command”. DBCC kommandon används generellt sett till att se över en databas fysiska och logiska stabilitet, fast de används även till andra varierande uppgifter som du snart kommer att få se.
Notera att kommandot
DBCC TRACEON (3604)
finns utskrivet före var och en av de följande DBCC exemplen. Kommandot finns där för att bättre kunna demonstrera effekten av varje kommando genom att lista riktningen av resultaten från DBCC kommandona. Om du skulle skriva ut något av följande DBCC kommandon utan ta med ovanstående kommando, så kommer DBCC kommandona att köras, men du kommer inte att se vad som händer.
DBCC ALLOCDUMP
Det här kommandot kan användas till att visa alla områden på en allokeringssida.Syntax:
DBCC allocdump(dbid,page)
där:
dbid - databasID
page – numret på allokeringssidan
Ett exempel:
DBCC TRACEON (3604)
DECLARE @dbid int, @pageid int
SELECT @dbid = DB_ID('pubs')
SELECT @pageid = first FROM sysindexes
WHERE id = object_id('titleauthor') AND indid = 1
DBCC allocdump(@dbid, @pageid)
DBCC BHASH
Det här kommandot kan kolla Buffer Hash tabellens integritet, med tillvalet att skriva ut det.Syntax:
DBCC bhash({print_bufs | no_print}, bucket_limit)
där:
print_bufs – visa alla buffrar (standard) eller
no_print – visa endast buffrar som har problem
bucket_limit – antalet tillåtna buffrar i ett lagringsutrymme (standard = 0)
Ett exempel:
DBCC TRACEON (3604)
DBCC bhash
DBCC Buffer
Det här kommandot används till att skriva ut Buffer headers och sidor ur Buffer Cachen.Syntax:
dbcc buffer ([dbid|dbnamn] [,objid|objnamn] [,nbufs], [printopt])
där:
dbid|dbnamn – databasID eller databasnamn
objid|objnamn – objektID eller objektnamn
nbufs – antalet buffrar som ska granskas
printopt - utskriftsalternativ, vilka inkluderar:
0 – skriver endast ut Bufferrubriken och Sidorubriken (standard)
1 – skriver ut varje rad separat samt offsettabellen
2 – skriver ut varje rad som en helhet samt offsettabellen
Ett exempel:
DBCC TRACEON (3604)
DBCC buffer(master,'sysobjects')
DBCC Bytes
Det här kommandot används för att dumpa bytes från en specifik adress:Syntax:
dbcc bytes (startadress, längd)
där:
startadress – Startadressen att dumpa
längd – Antalet bytes som ska dumpas
Ett exempel:
DBCC TRACEON (3604)
DBCC bytes (10000000, 100)
DBCC DBInfo
Kommandot visar DBINFO strukturen för en specifik databasSyntax:
DBCC DBINFO [(dbnamn)]
där:
dbnamn – är databasens namn
Ett exempel:
DBCC TRACEON (3604)
DBCC DBINFO (master)
DBCC DBTable
Det här kommandot visar innehållet i DBTABLE strukturen.Syntax:
DBCC DBTABLE ({dbid|dbnamn})
där:
dbid|dbnamn – databasnamn eller databasID
Ett exempel:
DBCC TRACEON (3604)
DBCC DBTABLE (master)
DBTABLE strukturen har en resultatparameter som kallas dbt_open. Den parametern håller koll på hur många användare som är inne i databasen.
DBCC DELETE_ROW
Det här kommandot kan användas till att ta bort ett Index eller en datapost, antingen genom ett sidnummer eller avsättningen på en sida. DBCC delete_row är ett icke-loggat kommando, så du kan ta bort en specifik post utan att det läggs upp i transaktionsloggen. Använd kommandot på egen risk!Syntax:
DBCC delete_row (dbid|dbnamn, page, delete_by_row, rownum)
där:
dbid|dbnamn – databasID eller databasnamn
page – logiskt sidnummer
delete_by_row – specificera hur du vill ta bort; per rad eller per område
1 – anger att nästa parameter är ett radnummer
0 – anger att nästa parameter är området på en sida
rownum – radnummer eller område
Ett exempel:
SET NOCOUNT ON
GO
USE pubs
GO
DBCC TRACEON (3604)
GO
DECLARE @pgid int
SELECT COUNT(*) FROM titleauthor
SELECT @pgid = first FROM sysindexes
WHERE id = object_id('titleauthor') AND indid = 1
SELECT xactid AS TRAN_ID, op AS LOG_RECORD FROM syslogs
DBCC delete_row (pubs, @pgid, 'row', 1)
SELECT xactid AS TRAN_ID, op AS LOG_RECORD FROM syslogs
SELECT COUNT(*) FROM titleauthor
DBCC DES
Skriver ut innehållet i en specifik DES (descriptor).Syntax:
DBCC DES [([dbid|dbnamn] [,objid|objnamn])]
där:
dbid|dbnamn - databasID eller databasnamn
objid|objnamn - objektID objektnamn
Ett exempel:
DBCC TRACEON (3604)
DBCC DES
DBCC EXTENTCHAIN
Det här kommandot visar storleksheader information för alla områden som används av ett specifikt objekt.Syntax:
DBCC extentchain(dbid,objid,indexid,sort={1|0},display={1|0} [,order={1|0}])
där:
dbid - databasID
objid - objektID
indexid - indexID
sort – statusrapport för sorteringsbiten
0 – ta inte med den här informationen
1 – ta med statusrapporten
display – vad som ska rapporteras
0 – visa endast antalet
1 – visa alla områden
order - (tillval) sorteringsalternativ
0 – descending, 1 – ascending
Ett exempel:
DBCC TRACEON (3604)
DECLARE @dbid int, @objectid int
SELECT @dbid = DB_ID('pubs')
SELECT @objectid = object_id('authors')
DVCC EXTENTCHAIN(@dbid,@objectid,0,0,0,0)
DBCC EXTENTCHECK
Det här kommandot får samma resultat som extentchain, och det analyserar alla områden på allokeringssidor för ett specifikt objekt.Syntax:
DBCC extentcheck(dbid, objid, indexid, sort = {1|0})
där:
dbid - databasID
objid - objektID
indexid - indexID
sort – statusrapport för sorteringsbiten
0 – ta inte med rapporten
1 – ta med rapporten
Ett exempel:
DBCC TRACEON (3604)
DECLARE @dbid int, @objectid int
SELECT @dbid = DB_ID('pubs')
SELECT @objectid = object_id('authors')
DBCC EXTENTCHECK(@dbid,@objectid,0,1)
DBCC EXTENTDUMP
Det här kommandot visar en dumpning i ett område.Syntax:
DBCC extentdump(dbid, page)
där:
dbid – databasID
page – antalet sidor som är kontrollerade av området i fråga
Ett exempel:
DBCC TRACEON (3604)
DECLARE @dbid int
SELECT @dbid = DB_ID('pubs')
DBCC EXTENTDUMP(@dbid, 1)
DBCC EXTENTZAP
Det här kommandot kan användas till att rensa bort alla områden som matchar parametervärdet.Syntax:
DBCC extentzap(dbid, objid, indexid, sort)
där:
dbid - databasID
objid - objektID
indexid - indexID
sort – statusen på sorteringsbiten
Ett exempel:
DBCC TRACEON (3604)
DECLARE @dbid int, @objectid int
SELECT @dbid = DB_ID('pubs')
SELECT @objectid = object_id('authors')
DBCC extentzap(@dbid,@objectid,0,0)
DBCC FINDNOTFULLEXTENTS
Det här kommandot visar storleksID av områden som är allokerade till det specifika objektID som inte är fullt. Om ett objektID specificeras så bör du även specificera ett IndexID, för om det bara specificeras ett objektID, så kommer alla tabeller i databasen att visas.Syntax:
DBCC findnotfullextents(dbid, objid, indexid, sort = {1|0})
där:
dbid - databasID
objid - objektID
indexid - indexID
sort – statuset på sorteringsbiten
Ett exempel:
DBCC TRACEON (3604)
DECLARE @dbid int, @objectid int
SELECT @dbid = DB_ID('pubs')
SELECT @objectid = object_id('authors')DBCC findnotfullextents(@dbid,@objectid,0,0)
DBCC HELP
DBCC HELP returnerar syntaxinformationen för ett specifikt DBCC uttryck. Syntax:
DBCC HELP ('dbcc_statement' | @dbcc_statement_var | '?')
Ett exempel:
DBCC TRACEON (3604)
DECLARE @dbcc_stmt sysname
SELECT @dbcc_stmt = 'CHECKTABLE'
DBCC HELP (@dbcc_stmt)
DBCC IND
Visar alla sidor i ett Index som används i en specifik tabell.Syntax:
dbcc ind(dbid|dbname, objid|objname, printopt = {0|1|2})
där:
dbid|dbname – databasID eller databasnamn
objid|objname - objektid eller objektnamn
printopt - utskriftsalternativ
0 – (standard) skriv endast ut buffer- och sidheader
1 – skriv ut sidheaders, siddata i radformat samt offsettabeller
2 – skriv ut sidheaders, oformaterad siddata samt offsettabeller
Ett exempel:
DBCC TRACEON (3604)
DECLARE @obid int
SELECT @obid = object_id('authors')
DBCC ind (pubs, @obid, 1)
DBCC LOCATEINDEXPGS
Det här kommandot skriver ut alla referenser Indexet till den specificerade sidan.Syntax:
DBCC locateindexpgs(dbid, objid, page, indexid, level)
där:
dbid - databasID
objid - objektID
page – det logiska sidnumret på sidan dit dem sökta Indexreferenserna ska
indexid - indexID
level – nivå inom Indexet för att söka efter referenserna
Ett exempel:
DBCC TRACEON (3604)
DECLARE @dbid int, @objectid int
SELECT @dbid = DB_ID('pubs')
SELECT @objectid = object_id('authors')
DBCC locateindexpgs(@dbid,@objectid,1,1,0)
DBCC LOCK
Det här kommandot kan användas till att visa låsningskedjor.Syntax:
DBCC lock
Ett exempel:
DBCC TRACEON (3604)
DBCC LOCK
DBCC LOG
Det här kommandot används till att titta i transaktionsloggen i en specifik databas.Syntax:
DBCC log ({dbid|dbnamn}, [, type={|0|1|2|3|4}])
där:
dbid | dbnamn – databasID eller databasnamn
type – Vilken typ av utskrift man vill ha, vilket inkluderar:
0 – minimal information (operation, context, transaktionsID)
1 - mer information (plus flaggor, tags, postlängd, beskrivning)
2 – väldigt detaljerad information (plus objektnamn, Indexnamn, SidID, platsID (slotID))
3 – All information om varje operation
4 - All information om varje operation, plus hexadecimala dumpningar av den aktuella transaktionsloggens poster.
som standard så är type = 0
För att titta i ”master” databasens transaktionslogg så kör du följande kommando:
DBCC log (master)
DBCC Page
Du kan använda det här kommandot för att se datasidornas struktur.Syntax:
DBCC PAGE ({dbid|dbnamn}, sidnum [,utskriftsval] [,cache] [,logical])
där:
dbid|dbnamn – skriv in databasID eller databasnamn
sidnum – skriv in sidnumret för den SQL Server sidan som ska undersökas
utskriftsval – (Tillval) Utskriftsalternativet kan sättas till 0, 1, eller 2
0 - (Standard) Det här alternativet får DBCC PAGE att endast skriva ut informationen om Sidheadern.
1 – Det här alternativet får DBCC PAGE att skriva ut informationen om Sidheadern, varje rad av information på sidan samt sidans offsettabell. Varje rad som skrivs ut kommer att separeras från varandra.
2 – Det här alternativet är precis som det första (1), förutom att det skriver ut alla rader som en helhet hellre än att skriva ut varje rad individuellt. Balansen och headern kommer också att visas upp.
cache – (Tillval) Den här parametern tillåter antingen en 1 eller en 0
0 – Det här alternativet får DBCC PAGE att hämta sidnumret från hårddisken hellre än att leta efter det i cachen.
1 – (Standard) Om sidnumret finns i cachen så hämtar det här alternativet hellre sidnumret därifrån, än från bara hårddisken.
logical – (Tillval) Det här parametern är användbar ifall sidnumret som ska hämtas är en virtuell sida istället för en logisk sida. Det kan vara antingen 0 eller 1.
0 – Används om sidan som ska hämtas har ett virtuellt sidnummer.
1 – (Standard) Används om sidan som ska hämtas har ett logiskt sidnummer.
Ett exempel:
USE pubsGODBCC TRACEON (3604)
GODECLARE @pgid int
SELECT @pgid = first FROM sysindexes
WHERE id = object_id('titleauthor')
AND indid = 1DBCC PAGE (pubs, @pgid, 1)GO
Det här är resultaten från min dator:
...
DATA:
Offset 32 - 011e9820: 04042000 3137322d 33322d31 31373650 .. .172-32-1176P
011e9830: 53333333 33016400 0000051a 16150f04 S3333.d.........
...
DBCC PGLINKAGE
Det här kommandot kan användas till att visa sidkedjan och till att utföra integritetstest under traversal.Syntax:
DBCC pglinkage(dbid,start,number,printopt={0|1|2},target,order={1|0})
där:
dbid - databasID
start – Det sidnummer du vill börja med
number – antalet sidor att analysera, eller 0 om målet är specificerat
printopt - utskriftsalternativ
0 – visa endast antalet skannade sidor
1 – visa information om de sista 16 skannade sidorna
2 – visa alla sidnummer som skannas
target – den specifika sidan som vi letar efter
order - traversal sortering
(0 descending, 1 ascending)
Ett exempel:
DBCC TRACEON (3604)
DBCC PGLINKAGE(6,26,0,1,0,1)
DBCC PROCBUF
Det här kommandot hämtar en procedurs Buffer header samt en lagrad procedurs Buffer header, från procedurens cache.Syntax:
DBCC procbuf([dbid|dbnamn], [objid|objnamn], [nbufs], [printopt = {0|1}])
där:
dbid|dbnamn - databasID eller databasnamn
objid|objnamn – objektID eller objektnamn
nbufs – antalet Buffrar att skriva ut
printopt - utskriftsalternativ
0 – (standard) skriver endast ut procedurens buffer och procedurens header,
1 – skriver ut procedurens buffer, procedurens header och innehållet i Buffern
Ett exempel:
DBCC TRACEON (3604)
DBCC procbuf(master,'sp_help',1,0)
PRTIPAGE
Det här kommandot skriver ut ett utpekat sidnummer till varje rad i ett specifikt Index.Syntax:
DBCC prtipage(dbid, objid, indexid, indexpage)
där:
dbid - databasID
objid - objektID
indexid - indexID
indexpage – det logiska sidnumret på Indexet som ska dumpas
Ett exempel:
DBCC TRACEON (3604)
DECLARE @dbid int, @objectid int
SELECT @dbid = DB_ID('master')
SELECT @objectid = object_id('sysobjects')
DBCC prtipage(@dbid,@objectid,1,0)
DBCC PSS
Det här kommandot visar information om de processer som för tillfället är anslutna till Servern.Syntax:
DBCC pss(suid, spid, printopt = { 1 | 0 })
där:
suid - Serverns användarID
spid - Serverns processID
printopt – utskriftsalternativ
0 standardutskrifter
1 alla öppna DES samt det aktuella sekvensträdet
Ett exempel:
DBCC TRACEON (3604)
DBCC pss
DBCC REBUILDEXTENTS
DBCC rebuildextents bygger om en områdeskedja. Innan du kör det här kommandot så bör du sätta din databas som READ ONLY.Syntax:
DBCC rebuildextents(dbid, objid, indexid)
där:
dbid - databasID
objid - objektID
indexid - indexID
Ett exempel:
DBCC TRACEON (3604)
DECLARE @dbid int, @objectid intSELECT @dbid = DB_ID('pubs')
SELECT @objectid = object_id('authors')
DBCC rebuildextents(@dbid,@objectid,1)
DBCC RESOURCE
Det här kommandot visar Serverns RESOURCE, PERFMON och DS_CONFIG information. RESOURCE visar adresser på varierande datastrukturer som används av Servern.
PERFMONstrukturen innehåller master..spt_monitor fältinformation.
DS_CONFIGstrukturen innehåller master..syscurconfigs fältinformation.
Syntax:
DBCC resource
Ett exempel:
DBCC TRACEON (3604)
DBCC resource
DBCC SHOW_BUCKET
Det här kommandot visar Hash Bucket information för ett specificera pageid.Syntax:
DBCC show_bucket(dbid|dbname, pageid, lookup_type)
där:
dbid|dbname - databasID eller databasnamn
page – det logiska sidnumret på sidan som man letar efter
lookup_type – hur man ska utföra sökningen
1 - Använd hash algoritmen för att leta i det lagringsutrymme där sidan borde finnas
2 – Skanna hela buffer cachen
Ett exempel:
DBCC TRACEON (3604)DBCC show_bucket (pubs, 1, 1)
DBCC TAB
Du kan använda detta odokumenterade kommando till att se över datasidornas struktur (till skillnad från DBCC PAGE, som returnerar information om alla datasidor med information om övervakade tabeller, och inte bara för ett särskilt nummer)Syntax:
DBCC tab (dbname, objname, printopt={ 0 | 1 | 2 })
där:
dbname - databasnamnet
objname - tabellnamnet
printopt - utskriftsalternativ
0 – (standard) minimal information (endast sidheaders, det totala antalet sidor i den här tabellen samt det totala antalet dataposter i tabellen)
1 - mer information (plus en fullständig poststruktur)
2 – precis som alternativ = 1, fast utan en separering av posterna (full dumpning)
Ett exempel:
DBCC TRACEON (3604)DBCC tab (pubs, 'authors')
0 Kommentarer