En votre propre code, vous ne déclarez jamais ou placez une valeur pour le @holddate.
Êtes-vous sûr vous avez-vous déclaré LES DEUX variables comme varchar (100) ?
Pour aider à voir ce qui continue, enlever la Commande BACKUP pendant un moment, et la remplacer par
CHOISIR @mystring
Alors une fois que vous savez ce qui est dans la corde, vous pouvez examiner la Commande BACKUP. Ma conjecture est qu'elle n'aime pas les espaces et/ou les caractères spéciaux dans votre format de date.