【发布时间】:2013-06-12 05:45:28
【问题描述】:
我们有一个自定义数据库更新程序,它在 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 满意。
我该如何解决这个问题?
【问题讨论】:
-
这个问题对你有帮助吗? stackoverflow.com/questions/40814/…
-
SQL 服务器。 Blorgbeard - 我以前看过这个页面,我的偏好是不引入对 SMO 的依赖。不过,如果没有更好的选择,可以这样做。
-
把更新语句放入
exec怎么样?
标签: sql sql-server alter