Si vous essayez de créer votre table sans la contrainte PK en cluster, et vous obtiendrez une erreur légèrement différente:
  Msg 1701, niveau 16, état 1, ligne 1 La création ou la modification de la table 'Mytable' a échoué car la taille de ligne minimale serait 8067, y compris 1530 octets de surcharge interne. Cela dépasse la taille de ligne de table maximale autorisée de 8060 octets.
Dans ce message d'erreur, vous pouvez voir qu'il y a 1530 octets de surcharge interne pour la compression de page.
Maintenant, vous pouvez faire le calcul:
- 8 octets pour bigintMyTableID
- 4 octets pour intLastColumn
- 9 octets pour chacune des 593 numeric(19,4)colonnes (5337 octets au total)
- 1530 octets de surcharge de compression
Donc, 8 + 4 + (593 * 9) + 1530 = 6879.
 Attendez une seconde ....   C'est toujours en dessous de 8060. Qu'est-ce qui se passe?!
L'algorithme de compression de page empile en fait plusieurs algorithmes de compression ensemble. La première étape consiste à appliquer la compression ROW. La surcharge de la compression de ligne n'est pas incluse dans les 1530 octets de surcharge répertoriés dans ce message d'erreur. 
Vous pouvez en savoir plus sur le fonctionnement de la compression de lignes ici sur mon blog et ici dans BOL . Vous noterez dans l'article BOL qu'il décrit le numericstockage comme «Ce stockage est exactement le même que le format de stockage vardécimal», mais n'explique pas vardecimal. Ce message couvre vardecimalun peu plus - essentiellement, il ajoute 2 octets de surcharge par colonne pour stocker la longueur réelle (similaire à ce qui le varcharfait).
La compression des lignes nécessitera 2 octets supplémentaires pour chacune des 593 numericcolonnes, plus le bigintet intnécessitera 1 octet de surcharge chacun.
Les exigences de stockage compressées par ligne seraient les suivantes:
- 8 octets + 1 octet de surcharge pour bigintMyTableID
- 4 octets + 1 octet de surcharge pour intLastColumn
- 9 octets + 2 octets de surcharge pour chacune des 593 numeric(19,4)colonnes
- 1188 octets de surcharge de compression ROW
8 + 4 + (593 * 9) = 5349 octets de données
1 + 1 + (593 * 2) = surcharge de compression de ligne de 1188 octets
6537 octets au total pour le schéma compressé par ligne
Maintenant que nous avons la taille de ligne pour le schéma compressé par ligne, nous pouvons revoir nos calculs. La taille de la ligne compressée sera la taille des données + la surcharge de compression de ligne + la surcharge de compression de page:
- 8 octets pour bigintMyTableID
- 4 octets pour intLastColumn
- 9 octets pour chacune des 593 numeric(19,4)colonnes
- 1188 octets de surcharge de compression ROW
- 1530 octets de surcharge de compression PAGE
  5349 octets de données 
+ 1188 octets de compression de ligne 
+ 1530 octets de compression de page 
8067 octets au total