Я сомневаюсь, что SQL SERVER создает полную строку запроса из заданного параметризованного запроса, в котором список параметров объединяется.
Скорее всего, он анализирует заданную параметризованную командную строку, разбивая ее на внутреннюю структуру данных на основе зарезервированных слов и символов (SELECT, FROM, ",", "+" и т. Д.). В этой структуре данных есть свойства / места для значений, таких как имена таблиц, литералы и т. Д. Именно здесь он копирует (дословно) каждый передаваемый параметр (из списка) в соответствующий раздел этой структуры.
поэтому ваше @UserName значение: 'x'; удалить из пользователей -
никогда не нужно экранировать, просто используйте в качестве буквального значения, которым оно действительно является.