Denn einer davon ist ein transact SQL-Befehl (der try catch) und der andere eine DDL-Anweisung.
Sie sollten wahrscheinlich besser abfragen, ob die Spalte existiert, bevor Sie die alter-Anweisung ausführen.
Um dies mit MSSQL zu tun, siehe Wie überprüfe ich, ob eine Spalte in einer SQL Server-Tabelle existiert?
Speziell für Ihren Fall,
IF COL_LENGTH('nyork', 'Qtr') IS NULL
BEGIN
alter table nyork
add [Qtr] varchar(20)
END