Не можете да използвате променливи, като @tableName, в DDL. Освен това, разделянето на името на части и игнорирането на схемата може да доведе само до грешки. Трябва просто да използвате замяната ''?'' в пакетния параметър на SQL и да разчитате на MSforeachtable
замяна:
EXEC sp_MSforeachtable '
if not exists (select * from sys.columns
where object_id = object_id(''?'')
and name = ''CreatedOn'')
begin
ALTER TABLE ? ADD CreatedOn datetime NOT NULL DEFAULT getdate();
end';