DBCC kommandon - några odukomenterade (SQL 7/2000)
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 7.0 och 2000.Innehåll
»»
»
»
»
»
»
»
»
»
»
»
»
»
Användbara odokumenterade DBCC kommandon i SQL Server 7.0 och 2000
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 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 och offsettabellen
2 – skriver ut varje rad som en helhet och 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 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 HELP
DBCC HELP returnerar syntaxinformationen för ett specifikt DBCC uttryck. Till skillnad från DBCC HELP kommandot i version 6.5, så returnerar det endast syntaxinformationen för de dokumenterade DBCC kommandona.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|dbnamn, objid|objnamn, printopt = {-2|-1|0|1|2|3})
där:
dbid|dbnamn – databaseID eller databasenamn
objid|objnamn – objektID eller objektnamn
printopt - utskriftsval
Det har skett en förändring i hur kommandot används i SQL Server 7.0, nämligen det att utskriftsvalet numera är obligatoriskt.
Ett exempel:
DBCC TRACEON (3604)
DBCC IND (master, sysobjects, 0)
DBCC LOG
Det här kommandot används till att titta i transaktionsloggen i en specifik databas.Syntax:
DBCC log ({dbid|dbnamn}, [, type={-1|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.
-1 - All information om varje operation, plus hexadecimala dumpningar av den aktuella transaktionsloggens poster, plus Checkpoint Begin, DB Version, Max XDESID
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 skriver endast ut informationen i Sidheadern.
1 – Det här alternativet får DBCC PAGE skriver ut informationen i Sidheadern, varje rad av information på sidan samt sidans balanstabell. 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 hämtar 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:
DBCC TRACEON (3604)
DBCC PAGE (master, 1, 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 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 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 (dbid, objid)
där:
dbid – databasID
objid - tabellID
Ett exempel:
DBCC TRACEON (3604)
DECLARE @dbid int, @objectid int
SELECT @dbid = DB_ID('master')
SELECT @objectid = object_id('sysdatabases')
DBCC TAB (@dbid,@objectid)
0 Kommentarer