Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 什么定义了VS2012数据库项目中脚本的执行顺序?_.net_Visual Studio 2012_Database Project - Fatal编程技术网

.net 什么定义了VS2012数据库项目中脚本的执行顺序?

.net 什么定义了VS2012数据库项目中脚本的执行顺序?,.net,visual-studio-2012,database-project,.net,Visual Studio 2012,Database Project,数据库项目中有几种类型的脚本:PreDeployment、PostDeployment、Build和NotInBuild 尽管前两个脚本只能存在于一个副本中,但构建脚本可能非常丰富 我找不到执行buid脚本的时间和顺序的信息。 这是否意味着构建脚本不能依赖于执行顺序,或者我遗漏了什么?您可以将一个脚本标记为“PreDeployment”,另一个脚本标记为“PostDeployment”。这些脚本将使用SQLCMD语法将其他脚本(构建类型“none”)作为该过程的一部分 预部署脚本将被编译,以包括

数据库项目中有几种类型的脚本:
PreDeployment
PostDeployment
Build
NotInBuild

尽管前两个脚本只能存在于一个副本中,但构建脚本可能非常丰富

我找不到执行buid脚本的时间和顺序的信息。

这是否意味着构建脚本不能依赖于执行顺序,或者我遗漏了什么?

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

预部署脚本将被编译,以包括您指定的顺序中包含的所有脚本。部署后脚本将以相同的方式编译

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

:r .\IncludeThisScript.sql

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

那么构建脚本呢?如果您指的是更改数据库的实际脚本,则完全由内部控制。据我所知,影响该顺序的唯一方法是手动编辑生成的脚本。通常情况下,不做完全脱离常规的事情是很好的。然后,最好创建不依赖于执行顺序的构建脚本……好吧,您不创建构建脚本。您可以处理部署前和部署后脚本。主构建脚本是自动生成的。您可以控制前后发生的事情以及顺序。有时,您需要控制该顺序—例如在相关表中插入数据时,或者需要按特定顺序转换数据时。但我可以添加具有生成类型的新脚本。至少VS允许这样做。