DDL では、@tableName などの変数を使用できません。その上、名前を部分的に分割してスキーマを無視すると、バグが発生するだけです。 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';
プレ>