A restauração do nosso banco de dados para o novo hardware do servidor falhou com um erro de página.
Message
SQL Server detected a logical consistency-based I/O error:
incorrect pageid (expected 49:8125916; actual 49:29097436).
It occurred during a read of page (49:8125916) in database ID 7 at
offset 0x00000f7fbb8000 in file x:\Databases\Data07\DataWarehouse_OperationalData_15.ndf'.
Additional messages in the SQL Server error log or system event
log may provide more detail. This is a severe error condition that threatens database integrity and must be corrected immediately.
Complete a full database consistency check (DBCC CHECKDB).
This error can be caused by many factors;
for more information, see SQL Server Books Online.
Um DBCC CheckDB nos levará cerca de uma semana neste banco de dados de 70 TB e servidor de 6 anos.
Existe alguma chance de que é meu backup que está corrompido?
Ou que o novo servidor está com defeito?
Ou é o banco de dados de produção no servidor antigo que é o problema?
Este é o SQL Server 2016 SP1 CU1 e page_verify_option_desc é CHECKSUM.
Isto é o que posso ver no log de erros no novo servidor:
Starting up database 'DataWarehouse'.
The database 'DataWarehouse' is marked RESTORING and is in a state that does not allow recovery to be run.
Error: 824, Severity: 16, State: 2.
SQL Server detected a logical consistency-based I/O error: incorrect pageid (expected 49:8125916; actual 49:29097436). It occurred during a read of page (49:8125916) in database ID 7 at offset 0x00000f7fbb8000 in file 'S:\MSSQL\DSA\Databases\DataWarehouse\Data07\DataWarehouse_OperationalData_15.ndf'. Additional messages in the SQL Server error log or system event log may provide more detail. This is a severe error condition that threatens database integrity and must be corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.
Error: 18456, Severity: 14, State: 38.
Quando eu executo isso no servidor antigo:
DBCC TRACEON (3604);
DBCC PAGE ('datawarehouse', 49, 8125916, 0);
Eu entendi isso
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
PAGE: (49:8125916)
BUFFER:
BUF @0x000000802C5E9300
bpage = 0x0000004DF03E8000 bhash = 0x0000000000000000 bpageno = (49:8125916)
bdbid = 5 breferences = 1 bcputicks = 0
bsampleCount = 0 bUse1 = 5844 bstat = 0x9
blog = 0x15ab215a bnext = 0x0000000000000000 bDirtyContext = 0x0000000000000000
bstat2 = 0x0
PAGE HEADER:
Page @0x0000004DF03E8000
m_pageId = (49:8125916) m_headerVersion = 1 m_type = 3
m_typeFlagBits = 0x0 m_level = 0 m_flagBits = 0xa200
m_objId (AllocUnitId.idObj) = 10814647 m_indexId (AllocUnitId.idInd) = 256
Metadata: AllocUnitId = 72058302786633728
Metadata: PartitionId = 72058370492596224 Metadata: IndexId = 1
Metadata: ObjectId = 1916450641 m_prevPage = (0:0) m_nextPage = (0:0)
pminlen = 0 m_slotCnt = 2 m_freeCnt = 2452
m_freeData = 5764 m_reservedCnt = 0 m_lsn = (2455108:11140830:20)
m_xactReserved = 0 m_xdesId = (28:447547798) m_ghostRecCnt = 0
m_tornBits = 31453216 DB Frag ID = 1
Allocation Status
GAM (49:7668480) = ALLOCATED SGAM (49:7668481) = NOT ALLOCATED
PFS (49:8120352) = 0x42 ALLOCATED 80_PCT_FULL DIFF (49:7668486) = CHANGED
ML (49:7668487) = NOT MIN_LOGGED
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
DBCC CHECKFILEGROUP está em execução no momento. Finalizado sem erros.
SeanGallardy comentou sobre os números binários. Levei muito tempo para ver o que ele queria dizer, mas finalmente digitei os dois números na Calculadora do Windows no modo Programador, e aqui está o que mostra:
Atualização: Fizemos outro backup e restauração do servidor antigo para o novo. Desta vez recebemos esta mensagem:
Could not redo log record (2456609:4261461:64), for transaction ID (28:972770238), on page (48:211577379), allocation unit 72058359886184448, database 'DataWarehouse' (database ID 7).
Page: LSN = (2456609:3279166:236), allocation unit = 72058351460417536, type = 20. Log: OpCode = 2, context 5, PrevPageLSN: (2456609:4250688:2).
Restore from a backup of the database, or repair the database.
Tentei pesquisar no Google esta mensagem, mas o único conselho que posso encontrar é restaurar o banco de dados (que é o que estou tentando).
A verdadeira questão é; O que eu devo fazer a seguir?
Você não tem um backup até que tenha feito uma restauração .
Isso pode não soar como a 'resposta' para uma pergunta do DBA.SE, mas, francamente, suas únicas opções razoáveis aqui são abrir um caso de suporte com a Microsoft e pedir assistência ou contratar um profissional respeitável (consultor ou empresa) que tenha um registro comprovado de correção de problemas de corrupção do SQL Server. Se você não puder pagar por essas opções, significa que os dados não valem a pena.