Parce que l'un d'eux est une commande transact sql (le try catch) et l'autre est une instruction DDL.
Vous feriez probablement mieux de demander si la colonne existe avant de faire l'instruction alter.
Pour ce faire avec MSSQL, voir Comment vérifier si une colonne existe dans une table SQL Server ?
Spécifiquement pour votre cas,
IF COL_LENGTH('nyork', 'Qtr') IS NULL
BEGIN
alter table nyork
add [Qtr] varchar(20)
END