【发布时间】:2014-03-03 14:48:23
【问题描述】:
数据库项目中有几种类型的脚本:PreDeployment、PostDeployment、Build和NotInBuild。
前两个只能存在于一个副本中,而构建脚本可能非常丰富。
我找不到有关执行 buid 脚本的时间和顺序的信息。
这是否意味着构建脚本不能依赖于执行顺序或者我错过了什么?
【问题讨论】:
标签: .net visual-studio-2012 database-project
数据库项目中有几种类型的脚本:PreDeployment、PostDeployment、Build和NotInBuild。
前两个只能存在于一个副本中,而构建脚本可能非常丰富。
我找不到有关执行 buid 脚本的时间和顺序的信息。
这是否意味着构建脚本不能依赖于执行顺序或者我错过了什么?
【问题讨论】:
标签: .net visual-studio-2012 database-project
您可以将一个脚本标记为“PreDeployment”,将一个脚本标记为“PostDeployment”。这些脚本将使用 SQLCMD 语法将其他脚本(构建类型“none”)包含在该过程中。
预部署脚本将被编译为包含按您指定的顺序包含的所有脚本。 Post-deploy 脚本将以相同的方式编译。
要在部署前或部署后脚本中包含文件,请使用如下语法:
:r .\IncludeThisScript.sql
当您发布时,会先运行 Pre-deploy 脚本,然后进行 DB 更改,然后再运行 post-deploy 脚本。还值得注意的是,DB Change 脚本是在不知道部署前/部署后脚本将做什么或已经做什么的情况下生成的。如果您在预部署脚本中创建表并尝试在项目中创建它,则项目可能会失败,因为该表已经存在。
【讨论】: