我们有一个自定义数据库更新程序,它在 SQL Server 上运行各种 SQL 脚本。一些脚本需要向表中添加一个新列,然后在单个脚本中的事务中填充值:
using (var scope = new TransactionScope()) {
... alter table MyTable add FOOBAR int;
... update schappointment set FOOBAR = 1;
}
问题是,SQL 吐回“无效的列名'FOOBAR',因为“alter table”命令尚未生效。将其包装起来exec()
没有区别:
... exec('alter table MyTable add FOOBAR int;')
... update schappointment set FOOBAR = 1;
它在 SQL Management Studio 中运行良好,因为它使用 GO 命令(我知道这不是有效的 T-SQL 命令)将其拆分。
我不想在项目中创建任何新的依赖项。
我的偏好是不要拆分模式和数据脚本,因为这会使脚本数量翻倍,除了让 SQL 满意之外,没有其他原因。
我该如何解决这个问题?