Bom dia pessoal,
Hoje vamos verificar algumas lições da prova 20462. Vamos começar sobre como chegar a integridade do banco.
- DBCC CheckAlloc()
- Verifica integridade de alocação do banco, se há alguma coisa corrompida
- DBCC CheckCatalog()
- Verifica integridade de catalogo do banco (tabelas, views, procedures, etc)
- DBCC CheckDB()
- Verifica integridade banco de dados
- DBCC CheckTable()
- Verifica integridade das tabelas do banco
Reparar objetos banco
- REPAIR_REBUILD
- Checagem de consistência com reparação SEM perda de dados
- REPAIR_ALLOW_DATA_LOSS
- Checagem de consistência com reparação COM perda de dados
[CODE=SQL]
select * from [dbo].[orders]
–analise de alocacao
DBCC CHECKALLOC([CorruptDB])
DBCC CHECKCATALOG([CorruptDB])
DBCC CHECKDB([CorruptDB])
ALTER DATABASE [CorruptDB] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
DBCC CHECKDB([CorruptDB], REPAIR_ALLOW_DATA_LOSS);
ALTER DATABASE [CorruptDB] SET MULTI_USER WITH ROLLBACK IMMEDIATE;
GO
[/CODE]
Resultado
Msg 8945, Level 16, State 1, Line 13
Table error: Object ID 149575571, index ID 1 will be rebuilt.
The error has been repaired.
Msg 8928, Level 16, State 1, Line 13
Object ID 149575571, index ID 1, partition ID 72057594039697408, alloc unit ID 72057594040942592 (type In-row data): Page (1:283) could not be processed. See other errors for details.
The error has been repaired.
Msg 8939, Level 16, State 98, Line 13
Table error: Object ID 149575571, index ID 1, partition ID 72057594039697408, alloc unit ID 72057594040942592 (type In-row data), page (1:283). Test (IS_OFF (BUF_IOERR, pBUF->bstat)) failed. Values are 2057 and -4.
The error has been repaired.
Msg 8980, Level 16, State 1, Line 13
Table error: Object ID 149575571, index ID 1, partition ID 72057594039697408, alloc unit ID 72057594040942592 (type In-row data). Index node page (1:309), slot 0 refers to child page (1:283) and previous child (0:0), but they were not encountered.
The error has been repaired.
Msg 8978, Level 16, State 1, Line 13
Table error: Object ID 149575571, index ID 1, partition ID 72057594039697408, alloc unit ID 72057594040942592 (type In-row data). Page (1:310) is missing a reference from previous page (1:283). Possible chain linkage problem.
The error has been repaired.
Msg 8945, Level 16, State 1, Line 13
Table error: Object ID 149575571, index ID 2 will be rebuilt.
The error has been repaired.
Msg 8945, Level 16, State 1, Line 13
Table error: Object ID 149575571, index ID 3 will be rebuilt.
The error has been repaired.
Msg 8945, Level 16, State 1, Line 13
Table error: Object ID 149575571, index ID 4 will be rebuilt.
The error has been repaired.
Msg 8945, Level 16, State 1, Line 13
Table error: Object ID 149575571, index ID 5 will be rebuilt.
The error has been repaired.
Msg 8945, Level 16, State 1, Line 13
Table error: Object ID 149575571, index ID 6 will be rebuilt.
The error has been repaired.
Msg 8945, Level 16, State 1, Line 13
Table error: Object ID 149575571, index ID 7 will be rebuilt.
The error has been repaired.
Msg 8945, Level 16, State 1, Line 13
Table error: Object ID 149575571, index ID 8 will be rebuilt.
The error has been repaired.
Msg 8945, Level 16, State 1, Line 13
Table error: Object ID 149575571, index ID 9 will be rebuilt.
The error has been repaired.
There are 788 rows in 19 pages for object "Orders".
Conferindo quais pedidos ficaram sem detalhes
Restaurando paginações corrompidas a partir de um backup.
--Restaurando Paginações Corrompidas
USE MASTER
GO
RESTORE DATABASE CORRUPTDB
PAGE='1:283,1:309'
FROM DISK = 'C:\TESTE.BAK'
Índices e Fragmentação
- Fragmentação interna
- Ocorre no comando update.
Quando há um update (internamente ocorre um insert e um delete no banco), dividindo as paginações do DB. Ex: Um registro possui dados em diversas paginações:
10% do registro na paginação1
50% do registro na paginação2
40% do registro na paginação3
- Fragmentação externa
- Ocorre naturalmente, quando registros são inseridos aleatoriamente. Ex: Cadastrar clientes:
Fragmentado -> Bruno, José, Adão, Eva, Mauricio, Carlos, Robson.
- Fillfactor e PadIndex
- Fillfactor: Minimiza fragmentação: Informa quantos por cento da paginação é necessário para gravar um dados. Ex: Se um dado ocupar até 70% da paginação ele deve ser gravado numa paginação nova e não quebrado em 20% em uma paginação e outros 50% em outra paginação. Assim contribui para diminuir a fragmentação
- PadIndex: Além do Root Index também é criado no nível Intermediate Level. (3 imagens atrás). Obs: Por default é apenas no nível root
Rebuild Online
O Comando ONLINE = ON é responsável por refazer o rebuild em modo online.
- Updating Statistics
- AUTO_UPDATE_STATISTICS
- Parâmetro a nível de banco de dados que atualiza as estatísticas baseados em um algoritmo interno
- UPDATE STATISTICS
- Atualiza só as estatísticas que o DBA definir.
- sp_update
- Procedure que atualiza as estatísticas do banco.
Confira meu perfil profissional no LinkedIn e faça parte da minha rede.https://lnkd.in/w9kyFR
Abs,
Bruno F. Antognolli