SQL Server でさまざまな SQL スクリプトを実行するカスタム データベース アップデーターがあります。一部のスクリプトでは、テーブルに新しい列を追加してから、トランザクション内の 1 つのスクリプトで値を入力する必要があります。
using (var scope = new TransactionScope()) {
... alter table MyTable add FOOBAR int;
... update schappointment set FOOBAR = 1;
}
問題は、「alter table」コマンドが有効になっていないため、SQL が「Invalid column name 'FOOBAR'」を吐き出すことです。それをラップしexec()
ても違いはありません。
... exec('alter table MyTable add FOOBAR int;')
... update schappointment set FOOBAR = 1;
GO コマンド (有効な T-SQL コマンドではないことがわかっています) で分割されるため、SQL Management Studio 内で問題なく動作します。
プロジェクトに新しい依存関係を作成しないことをお勧めします。
私の好みは、スキーマ スクリプトとデータ スクリプトを分割しないことです。これにより、SQL を満足させる以外の理由でスクリプトの数が 2 倍になるからです。
どうすればこれを解決できますか?