Le 0 supplémentaire est ajouté car la valeur entière que vous lui attribuez est impaire. SQL Server le remplira avec un 0 supplémentaire pour le rendre égal.
declare @varmax varbinary(max)
set @varmax = 0x1234567 --odd
select @varmax --returns 0x01234567 with the padded 0
set @varmax = 0x12345678 --even
select @varmax --returns 0x12345678
Votre 9 est supprimé car vous entrez un nombre impair d'octets qui remplit la valeur maximale. Ainsi, un 0 est inséré mais cela dépasse le nombre maximum d'octets et est donc également tronqué, semble-t-il. J'ai pu reproduire votre erreur... mais je ne sais pas encore comment la contourner.
Voici la valeur que j'ai utilisée pour votre test. Ignorez les résultats... mais vous pouvez les copier dans votre propre SSMS et voir la sortie correcte.