U kunt geen variabelen, zoals @tableName, gebruiken in DDL. Trouwens, het splitsen van de naam in delen en het negeren van het schema kan alleen maar leiden tot bugs. U moet gewoon de ''?''-vervanging in de SQL-batchparameter gebruiken en vertrouwen op de MSforeachtable
vervanging:
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';