在if语句中添加自动生成的SQLSERVER脚本(Begin,End)

时间:2015-03-16 12:57:41

标签: sql sql-server database sql-server-2008 tsql

我正在尝试为SQLServer-2008中的每个版本创建一个大型数据库更改脚本。每个版本的所有脚本都包含在该版本的if语句的BEGIN和END标记中。

我手动创建的大多数脚本都很好,但是如果我在表格中间添加一个新字段而不是最后SQLSERVER自动生成的脚本相当大,那么创建一个{{1 },trigger

我注意到我必须删除所有脚本中的所有GO语句。删除所有后,我仍然会收到以下错误:

  

Msg 156,Level 15,State 1,Line 10641   关键字' TRIGGER'。

附近的语法不正确

然后我尝试将所有触发器包装在temp table语句中,但仍然出现错误:

  

Msg 105,Level 15,State 1,Procedure T_I_ProformaWhatIf,Line 5   字符串后的未闭合引号')   来自master.dbo.sysprocesses   WHERE spid = @@ spid

下面是一个我无法在IF,BEGIN,END中添加的脚本示例:

EXEC('')

任何关于更好地完成这件事的建议或建议都会很棒。

1 个答案:

答案 0 :(得分:0)

经过它再次将TRIGGERS包裹在EXEC中('')结束了工作。

这里的两个技巧如下:

  1. 删除所有GO语句
  2. 在EXEC('')中创建TRIGGER语句,例如

    EXEC('创建TRIGGER [dbo]。[T_U_Table1] ON dbo.Table1').....