web-dev-qa-db-fra.com

SQL Server a détecté une erreur d'E / S cohérente logique: PageIID incorrecte sur la restauration

La restauration de notre base de données au nouveau matériel de serveur a échoué avec une erreur de page.

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.

Un DBCC CheckDB nous prendra environ une semaine sur cette 70 TB Base de données et 6 ans.
[.____] Y a-t-il une chance que ce soit ma sauvegarde qui est corrompue?
[.____] ou que le nouveau serveur est en faute?
Ou est-ce la base de données de production sur l'ancien serveur qui est le problème?

Ceci est SQL Server 2016 SP1 CU1 et PAGE_VERIFY_OPTION_DESC est la checksum.

C'est ce que je peux voir à partir du journal des erreurs sur le nouveau serveur:

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.

Quand j'exécute ceci sur l'ancien serveur:

DBCC TRACEON (3604);
DBCC PAGE ('datawarehouse', 49, 8125916, 0);

J'ai compris

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 en cours d'exécution. Fini sans erreurs.

Seangallardy a commenté les chiffres binaires. Il m'a fallu beaucoup de temps pour voir ce qu'il voulait dire, mais j'ai finalement entré les deux chiffres dans la calculatrice Windows en mode programmeur et voici ce qu'il montre: -the red shows the differences

Mise à jour: Nous avons fait une autre sauvegarde et restaurée de l'ancien serveur au nouveau serveur. Cette fois, nous avons eu ce message:

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.

J'ai essayé de google ce message, mais le seul avis que je peux trouver est de restaurer la base de données (ce que j'essaie de).

La vraie question est; que devrais-je faire ensuite?

7
Henrik Staun Poulsen

Vous n'avez pas de sauvegarde avant de faire une restauration .

La vraie question est; que devrais-je faire ensuite?

Cela peut ne pas ressembler à la "réponse" à une question dba.se, mais franchement, vos seules options raisonnables ici sont d'ouvrir un cas d'assistance avec Microsoft et de demander une assistance ou d'embaucher un professionnel de la réputation (consultant ou société) qui a un Record prouvé de la corruption SQL Server. Si vous ne pouvez pas vous permettre ces options, cela signifie que les données ne valent pas la peine.

1
Remus Rusanu

Henrik,

Essayez de fournir la sortie de DBCC CheckdB. Vous devriez lire ce fil: erreur d'E/S cohérente de la cohérence DBCC

J'espère que cela vous aidera.

Bonne chance!

1
Alfie Jin