0

我应该将数据库迁移到VS2012 sql服务器项目中。我已经从目标数据库导入了所有模式。种子数据将被添加到项目中的后期部署脚本中。不过,我也预见到很多脚本在开发各种增强功能时被开发人员添加。这些可以是更改模式脚本以及数据添加编辑删除脚本。并且他们都必须按照顺序运行部署后,理想情况下由脚本名称执行1.0.0.0,然后执行1.0.0.2,然后执行1.0.1.0。 SQL Server项目不允许多个部署后文件。我可以在网上找到的是如何创建项目,而没有人会谈论如何创建一个结构,以考虑开发人员在不同发布周期内所做的更改(更改脚本)。有人可以帮我吗?VS2012中的自定义脚本文件Sql服务器项目

+1

为了使用多个后期部署脚本,您需要将一个主要后期部署脚本标记为构建类型的“后期部署”,然后在该脚本中使用“:r。\ script.sql “sqlcmd语法来包含实际的脚本。但是,正如Keith所说,您应该让项目在99%的案例中处理模式更改。这就是它设计的目的。很少,您可能必须在后期部署脚本中进行模式更改,但在必要之前,我会尽量避免它。 –

+0

是的,对部署后架构更新脚本的需求应该非常少见。你真的有这个需要吗?如果是这样,你能提供一个例子吗? –

+0

除了模式更新之外,多个数据插入更新脚本是我的担心。随着产品功能的增加,表格的种子数据会增加。例如,如果我正在创建一个贷款管理系统,我会将一个贷款的状态(InProcess,Rejected,Granted)放在一个表中。同样,对于正在进行的每个增强/故事可能都需要一些种子数据出现在系统中。我无法理解这将如何照顾。当然,将所有这些数据放入一个部署后脚本中并不是一个好主意。 – BatNetMan

回答

1

Schema Comparison消除了编写自己的更改脚本的需要。模式比较通过将数据库项目的模式与数据库服务器进行比较来自动为您创建alter脚本。

这是一个很好的walk-through of Schema Comparison

+0

感谢Keith,我认为这将解决我的模式脚本问题。不过,我正在处理数据脚本的问题。任何系统都需要一些种子数据,并随着功能数量的增加而增长。我将如何处理这些脚本。这些数据脚本也必须进行版本化,因为它需要灵活地从基于特定版本的源代码控制中提取代码库。 – BatNetMan

+0

不幸的是VS并没有提供直接的解决方案。我认为最常见的方法是创建一个插入种子数据的部署后脚本。或者,您可以将种子数据作为实体框架/其他ORM层的一部分插入。 – Keith

0

好的,这是我迄今为止所做的。

  • 其次Keith的投入和创建了一个项目
  • 使用架构比较处理架构基于变化
  • 创建了生成操作的单一主脚本= PostDeploy
  • 对于数据的脚本,创建命名为文件夹版本根据不同版本分离脚本
  • 在以下语法中添加了这些脚本在Master post deploy脚本中的条目:r Folder \ MyScript.sql

这将暂时适用,但应该有一种更好的方法来确保文件夹中的自定义脚本在主部署后脚本中自动选取。有了这个解决方案,开发人员每次添加一个脚本,就必须将一个条目写入主部署脚本(:MyCustomeDataScript.sql)

我认为可能有更好的方法来做到这一点,但我我没有意识到这一点。我正在努力寻找一种方法,可以自动在主部署脚本中手动输入新脚本。

+0

您可能会考虑使用诸如Red-Gate的SQL Data Compare等产品。如果您可以在某处保留数据库w/data的“主”副本,则可以使用它来生成“种子”脚本。我不知道你需要支持多少个版本,但是如果你不支持许多版本,你可能会简化这些脚本。但是,您需要有纪律才能检入并使用这些数据插入脚本。 (不一定是坏的,因为它可以确保你在发布时不会错过,但可能会很乏味) –

相关问题