(DATABASE CONSOLE COMMAND), usados na administração do
banco de dados.
De acordo com sua funcionalidades, são agrupados em 4 categorias:
MANUTENÇÃO - comandos que realizam tarefas de manutenção em:
- databases
- índices
- grupos de arquivos
DBCC DBREPAIR --> MANTIDO POR COMPATIBILIDADE (DEVE-SE DROPAR E RECRIAR O DATABASE CORROMPIDO)
DBCC INDEXDEFRAG
DBCC SHRINKDATABASE
DBCC SHRINKFILE
DBCC UPDATEUSAGE
STATUS - comandos que checam o status de objetos do sistema:
DBCC INPUTBUFFER
DBCC OPENTRAN
DBCC OUTPUTBUFFER
DBCC PROCCACHE
DBCC SHOWCONTIG
DBCC SHOW_STATISTICS
DBCC SQLPERF
DBCC TRACESTATUS
DBCC USEROPTIONS
VALIDAÇÃO - comandos que validam a estrutura e/ou alocação de:
- databases
- tabelas
- índices
- catálogos
- grupos de arquivos
- tabelas de sistema
- páginas do database
DBCC CHECKCATALOG
DBCC CHECKCONSTRAINTS
DBCC CHECKDB
DBCC CHECKFILEGROUP
DBCC CHECKIDENT
DBCC CHECKTABLE
DBCC NEWALLOC
DIVERSOS - comandos que realizam tarefas não enquadrados nas categorias acima:
DBCC dllname (FREE)
DBCC HELP
DBCC PINTABLE
DBCC ROWLOCK
DBCC TRACEOFF
DBCC TRACEON
DBCC UNPINTABLE
******************************************************************
ABAIXO, APRESENTAREI OS COMANDOS, SEGUIDOS DE EXEMPLOS DE USO.
LEMBRO QUE NÃO ESTOU LHES MOSTRANDO A SINTAXE COMPLETA DO COMANDO, MAS AS SUAS FORMAS MAIS USADAS.
PARA MAIS DETALHES, CONSULTE OS BOOKS ON LINE DO SQL SERVER OU O SITE HTTP://MSDN.MICROSOFT.COM/SQL
******************************************************************
Listagem 01 - Exemplos dos comandos
USE PUBS
--TODOS OS EXEMPLOS ABAIXO SERÃO EXECUTADOS NESSE DATABASE
/*
DBCC DBREINDEX(NOME DA TABELA) WITH NO_INFOMSGS
RECRIA TODOS OS ÍNDICES DA TABELA PASSADA COMO PARÂMETRO
ONDE:
NOME DA TABELA:
É O NOME DA TABELA A REINDEXAR
WITH NO_INFOMSGS:
INDICA QUE NÃO DEVEM SER APRESENTADAS AS MENSAGENS
*/
DBCC DBREINDEX(AUTHORS)
--DBCC execution completed. If DBCC printed error messages, contact your system administrator.
DBCC DBREINDEX(AUTHORS) WITH NO_INFOMSGS
--The command(s) completed successfully.
EXEC SP_MSFOREACHTABLE
@COMMAND1 = PRINT REINDEXANDO A TABELA ?,
@COMMAND2 = DBCC DBREINDEX(?) WITH NO_INFOMSGS
/*
REINDEXANDO A TABELA [dbo].[titleauthor]
REINDEXANDO A TABELA [dbo].[stores]
REINDEXANDO A TABELA [dbo].[sales]
REINDEXANDO A TABELA [dbo].[roysched]
REINDEXANDO A TABELA [dbo].[discounts]
REINDEXANDO A TABELA [dbo].[jobs]
REINDEXANDO A TABELA [dbo].[pub_info]
REINDEXANDO A TABELA [dbo].[employee]
REINDEXANDO A TABELA [dbo].[authors]
REINDEXANDO A TABELA [dbo].[publishers]
REINDEXANDO A TABELA [dbo].[titles]
*/
/*
DBCC INDEXDEFRAG(DATABASE, TABELA, ÍNDICE) WITH NO_INFOMSGS
REORGANIZA O ÍNDICE DA TABELA PASSADA COMO PARÂMETRO
ONDE:
DATABASE:
É O NOME DO DATABASE QUE CONTÉM A TABELA
TABELA:
É O NOME DA TABELA QUE CONTÉM O ÍNDICE
ÍNDICE:
É O NÚMERO QUE INDICA A ORDEM DO ÍNDICE
WITH NO_INFOMSGS:
INDICA QUE NÃO DEVEM SER APRESENTADAS AS MENSAGENS
*/
DBCC INDEXDEFRAG(PUBS, EMPLOYEE, 1)
/*
Pages Scanned Pages Moved Pages Removed
------------- ----------- -------------
0 0 0
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
*/
DBCC INDEXDEFRAG(PUBS, EMPLOYEE, 1) WITH NO_INFOMSGS
--The command(s) completed successfully.
/*
DBCC SHRINKDATABASE(DATABASE, ESPAÇO_LIVRE) WITH NO_INFOMSGS
DESALOCA ESPAÇOS NÃO OCUPADOS PELO DATABASE
ONDE:
DATABASE:
É O NOME DO DATABASE
ESPAÇO_LIVRE:
É O ESPAÇO LIVRE EM % QUE DEVERÁ ESTAR ALOCADO
NO FIM DO PROCESSO
*/
DBCC SHRINKDATABASE(PUBS, 0)
/*
DbId FileId CurrentSize MinimumSize UsedPages EstimatedPages
------ ------ ----------- ----------- ----------- --------------
5 1 160 80 152 152
5 2 63 63 56 56
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
*/
DBCC SHRINKDATABASE(PUBS, 0) WITH NO_INFOMSGS
--The command(s) completed successfully.
EXEC SP_MSFOREACHDB
@COMMAND1 = PRINT FAZENDO SHRINK DO DATABASE ?,
@COMMAND2 = DBCC SHRINKDATABASE(?, 0) WITH NO_INFOMSGS
/*
FAZENDO SHRINK DO DATABASE CAP_03
FAZENDO SHRINK DO DATABASE CAP_04
FAZENDO SHRINK DO DATABASE CAP_05
FAZENDO SHRINK DO DATABASE CAP_06
FAZENDO SHRINK DO DATABASE CAP_07
FAZENDO SHRINK DO DATABASE CAP_08_09
FAZENDO SHRINK DO DATABASE correio
FAZENDO SHRINK DO DATABASE DB_CDS
FAZENDO SHRINK DO DATABASE DVD
FAZENDO SHRINK DO DATABASE FILMES
FAZENDO SHRINK DO DATABASE IMPACTA
FAZENDO SHRINK DO DATABASE master
FAZENDO SHRINK DO DATABASE model
FAZENDO SHRINK DO DATABASE msdb
FAZENDO SHRINK DO DATABASE Northwind
FAZENDO SHRINK DO DATABASE pubs
FAZENDO SHRINK DO DATABASE tempdb
*/
/*
DBCC SHRINKFILE(NOME_LÓGICO, ESPAÇO_LIVRE) WITH NO_INFOMSGS
DESALOCA ESPAÇOS NÃO OCUPADOS POR UM ARQUIVO DE DADOS OU LOG
ONDE:
NOME_LÓGICO:
É O NOME LÓGICO DO ARQUIVO
ESPAÇO_LIVRE:
É O ESPAÇO LIVRE EM % QUE DEVERÁ ESTAR ALOCADO
NO FIM DO PROCESSO
*/
EXEC SP_HELPDB PUBS
/*MÚLTIPLAS LINHAS COM INFORMAÇÕES SOBRE O DATABASE PUBS
*/
DBCC SHRINKFILE(PUBS, 0)
/*
DbId FileId CurrentSize MinimumSize UsedPages EstimatedPages
------ ------ ----------- ----------- ----------- --------------
5 1 160 80 152 152
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
*/
/*
DBCC UPDATEUSAGE(DATABASE, TABELA, ÍNDICE) WITH COUNT_ROWS, NO_INFOMSGS
APRESENTA E CORRIGE OS VALORES ARMAZENADOS INCORRETAMENTE NA TABELA
SYSINDEXES, QUE FAZEM COM QUE A SAÍDA DA PROCEDURE SP_SPACEUSED SEJA FALSA
ONDE:
DATABASE:
É O NOME DO DATABASE QUE CONTÉM A TABELA - SE FOR
DIGITADO O VALOR 0 (ZERO), O DATABASE USADO SERÁ O
QUE ESTÁ EM USO
TABELA:
É O NOME DA TABELA QUE CONTÉM O ÍNDICE - OPCIONAL
ÍNDICE:
É O NÚMERO QUE INDICA A ORDEM DO ÍNDICE - OPCIONAL
WITH NO_INFOMSGS:
INDICA QUE NÃO DEVEM SER APRESENTADAS AS MENSAGENS
WITH COUNT_ROWS:
ATUALIZA A COLUNA "ROWS" DA TABELA SYSINDEXES COM A
QUANTIDADE DE LINHAS DA TABELA QUE ESTÁ SENDO ANALISADA,
PARA OS ÍNDICES DE ID 0 E 1
*/
EXEC SP_SPACEUSED EMPLOYEE
/*
name rows reserved data index_size unused
---------- ----- --------- ------ ----------- -------
employee 43 152 KB 64 KB 32 KB 56 KB
*/
DBCC UPDATEUSAGE (PUBS, EMPLOYEE) WITH COUNT_ROWS
/*
DBCC UPDATEUSAGE: sysindexes row updated for table employee (index ID 1):
DATA pages: Changed from (8) to (1) pages.
USED pages: Changed from (12) to (5) pages.
RSVD pages: Changed from (19) to (5) pages.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
*/
EXEC SP_SPACEUSED EMPLOYEE
/*
name rows reserved data index_size unused
--------- ----- --------- ----- ----------- -------
employee 43 40 KB 8 KB 32 KB 0 KB
*/
/*
DBCC INPUTBUFFER(PROCESSO)
RETORNA O ÚLTIMO COMANDO ENVIADO PELO CLIENTE AO SQL SERVER
ONDE:
PROCESSO:
ID DO PROCESSO
*/
SELECT @@SPID
--51
DBCC INPUTBUFFER(51)
/*
EventType Parameters EventInfo
-------------- ---------- ----------------------
Language Event 0 DBCC INPUTBUFFER(51)
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
*/
--AGORA, ABRA UMA NOVA JANELA (CTRL+N) E EXECUTE O COMANDO ABAIXO:
SELECT @@SPID
--52
SELECT * FROM SYSOBJECTS
--DIVERSAS LINHAS DE TABELA
--VOLTE A ESSA JANELA, SEM FECHAR A OUTRA (CTRL+TAB) E EXECUTE O COMANDO ABAIXO:
DBCC INPUTBUFFER(52)
/*
EventType Parameters EventInfo
-------------- ---------- --------------------------
Language Event 0 SELECT * FROM SYSOBJECTS
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
*/
/*
DBCC OPENTRAN(DATABASE) WITH TABLERESULTS
RETORNA DETALHES DAS TRANSAÇÕES ABERTAS
ONDE:
DATABASE:
É O NOME DO DATABASE - SE FOR DIGITADO O VALOR 0
(ZERO), O DATABASE USADO SERÁ O QUE ESTÁ EM USO
WITH TABLERESULTS:
RETORNA EM FORMATO DE TABELA
*/
--ABRA UMA NOVA JANELA (CTRL+N) E EXECUTE OS COMANDOS ABAIXO:
BEGIN TRAN
SELECT *
FROM TITLES A,
TITLES B,
TITLES C,
TITLES D,
TITLES E,
TITLES F
--ESSE SELECT RETORNA 34,012,224 REGISTROS
--(A TABELA TITLES TEM 18 REGISTROS)
--AGORA, ANTES DE O COMANDO TERMINAR, (PAREI A EXECUÇÃO AOS 10 MINUTOS E AINDA TINHA GERADO APENAS 12,500,000 REGISTROS)VOLTE PARA ESSA JANELA (CTRL+TAB) E EXECUTE O COMANDO ABAIXO:
DBCC OPENTRAN(0)
/*
Transaction information for database pubs.
Oldest active transaction:
SPID (server process ID) : 55
UID (user ID) : 1
Name : user_transaction
LSN : (4:365:1)
Start time : Jul 30 2006 4:35:14:633PM
*/
DBCC OPENTRAN(0) WITH TABLERESULTS
/*
pubs OPENTRAN
----------------- ---------------------------
OLDACT_SPID 55
OLDACT_UID 1
OLDACT_NAME user_transaction
OLDACT_LSN (4:365:1)
OLDACT_STARTTIME Jul 30 2006 4:35:14:633PM
*/
--FINALMENTE, CANCELE A EXECUÇÃO DO SELECT NA OUTRA JANELA
/*
DBCC OUTPUTBUFFER(PROCESSO)
RETORNA EM HEXA E ASCII A RESPOSTA DO SERVIDOR À SOLICITAÇÃO
DO CLIENTE
ONDE:
PROCESSO:
ID DO PROCESSO
*/
--ABRA UMA NOVA JANELA (CTRL+N) E EXECUTE OS COMANDOS ABAIXO:
SELECT @@SPID
--53
SELECT GETDATE()
--2006-07-30 17:01:36.800
--AGORA, VOLTE PARA ESSA JANELA (CTRL+TAB) E EXECUTE O COMANDO ABAIXO:
DBCC OUTPUTBUFFER(53)
/*
Output Buffer
---------------------------------------------------------
00000000 04 01 00 ... 00 00 00 00 a7 ...+.5.........§
00000010 07 00 09 ... 41 47 4e 41 4c .. .Ð.4.Ñ..AGNAL
00000020 44 4f fd ... 00 fd 01 00 ba DOý..Á......ý..º
... saída dos endereços -> 00000020 A 00000fc0
00000fd0 00 70 17 ... 1a 8a 01 00 00 .p..@...€s..Š...
00000fe0 ff ff ff ... 00 00 00 00 00 ÿÿÿÿ¹...........
00000ff0 00 00 00 ... 00 00 00 01 00 ................
*/
fonte: http://www.devmedia.com.br/articles/viewcomp.asp?comp=2481
Nenhum comentário:
Postar um comentário