忽略SSDT Post-Deployment脚本中的错误

时间:2012-04-10 12:42:33

标签: sql-server database visual-studio sql-server-data-tools

我需要在使用SSDT发布数据库后填充代码列表。所以我在项目中添加了新的部署后脚本,并从中使用SQLCMD:r命令调用另一个脚本,每个脚本都将数据插入到一个表中。但是如果表已经填满,则会违反主键约束并且整个设置被破坏。

如何在部署后脚本中抑制错误?不支持SQLCMD命令:on error ignore

2 个答案:

答案 0 :(得分:2)

以下是如何使用MERGE语句而不是原始INSERT实现所需内容的一个很好的示例。

http://blogs.msdn.com/b/ssdt/archive/2012/02/02/including-data-in-an-sql-server-database-project.aspx

答案 1 :(得分:0)

为什么不修改脚本以避免重新插入现有值?使用公用表表达式,你会得到类似的东西:

;with cte as (select *, row_number() over (partition by ... order by ...) as Row from ... )
  insert into ...
    select ...
    from cte where not exists (...) and cte.Row = 1

如果没有表定义,就不能更明确......