【问题标题】:What defines the order of script execution in VS2012 Database Project?什么定义了 VS2012 数据库项目中脚本执行的顺序?
【发布时间】:2014-03-03 14:48:23
【问题描述】:

数据库项目中有几种类型的脚本:PreDeploymentPostDeploymentBuildNotInBuild
前两个只能存在于一个副本中,而构建脚本可能非常丰富。

我找不到有关执行 buid 脚本的时间和顺序的信息。
这是否意味着构建脚本不能依赖于执行顺序或者我错过了什么?

【问题讨论】:

    标签: .net visual-studio-2012 database-project


    【解决方案1】:

    您可以将一个脚本标记为“PreDeployment”,将一个脚本标记为“PostDeployment”。这些脚本将使用 SQLCMD 语法将其他脚本(构建类型“none”)包含在该过程中。

    预部署脚本将被编译为包含按您指定的顺序包含的所有脚本。 Post-deploy 脚本将以相同的方式编译。

    要在部署前或部署后脚本中包含文件,请使用如下语法:

    :r .\IncludeThisScript.sql
    

    当您发布时,会先运行 Pre-deploy 脚本,然后进行 DB 更改,然后再运行 post-deploy 脚本。还值得注意的是,DB Change 脚本是在不知道部署前/部署后脚本将做什么或已经做什么的情况下生成的。如果您在预部署脚本中创建表并尝试在项目中创建它,则项目可能会失败,因为该表已经存在。

    【讨论】:

    • 那么构建脚本呢?
    • 如果您指的是更改数据库的实际脚本,那完全由内部控制。据我所知,要影响该顺序,您唯一能做的就是手动编辑生成的脚本。不完全做某事通常很好。
    • 那么最好创建不依赖执行顺序的构建脚本...
    • 好吧,您不必创建构建脚本。您处理部署前和部署后脚本。主构建脚本是自动生成的。您可以控制前后发生的事情以及顺序。有时您需要控制该顺序 - 例如当您在相关的表中插入数据时,或者如果您需要按特定顺序转换数据。
    • 但是我可以添加 Build 类型的新脚本。至少 VS 允许。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 1970-01-01
    • 2020-06-11
    • 2016-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多