【问题标题】:Database Deployment and applying release patch using Database project in vs2010在 vs2010 中使用 Database 项目部署和应用发布补丁
【发布时间】:2012-01-03 06:10:21
【问题描述】:

我想知道我们是否可以限制 VS2010 数据库项目生成的部署脚本,使其仅包含被修改的数据库对象,而不是整个 drop 和 create 序列。

例如,在合并连续更改后,下一个版本的脚本必须只包含已修改的存储过程、函数或表。我尝试取消选中“始终重新创建数据库”选项。但是它只是为整个数据库创建了一个脚本。

我试图找到类似的问题,我发现了一些接近我需要的问题,但仍然没有解决我的问题。

【问题讨论】:

  • 我从未为此使用过 VS2010 DB 项目,因此我无法真正回答,但我可以告诉您,我已经使用 Redgate SQL Compare 来完成此任务在过去。 red-gate.com/products/sql-development/sql-compare
  • 您是否尝试过部署数据库项目?你研究过吗?

标签: c# sql visual-studio-2010 database-project


【解决方案1】:

通过将“已编译”项目(.dbschema 文件)与您要部署到的数据库进行比较,然后创建更改脚本来部署数据库项目。关于如何创建更改脚本有很多选择,但基本情况是始终创建“实时”更改脚本。它只会包含部署工具认为不同的内容。

【讨论】:

  • 谢谢。在 VS2010 中,当我构建数据库项目时,它具有数据库中每个对象的架构,我实际上可以在 IDE 中编辑 SP/UDF。正是这些更改,我只想为项目或解决方案中更改的那些对象跟踪和生成脚本。可以做到吗?截至目前,它创建了一个删除脚本并创建了整个数据库。我是否需要更改任何设置才能执行此操作?我将继续在网上寻找资源以获取更多信息。如果在源代码控制下,MS Build 是否提供任何设置来获取更改的脚本?
  • 那你的设置设置错了。检查“部署”选项卡下的项目设置。您必须设置“每次重新创建数据库”的设置。另外,请确保您在项目设置中使用的是“项目设置”而不是“我的隔离沙盒环境”。
【解决方案2】:

出于偏好和控制原因,我们手动跟踪所有更改,并保留更新数据库的脚本(我有一个答案 here on SO 概述了我们的步骤),但我们也使用 RedGate 的 SQL PackagerSQL Compare , 和 SQL Data Compare 产品满足我们的一些需求。

它们最初很昂贵,但在我们的组织中已经为自己付出了更多。

【讨论】:

  • @bhushan1980:我已经用产品链接和我们的 stackoverflow 问题更新了答案。
【解决方案3】:

问题是这根本行不通,因为它无法处理每个定义的任何类型的字段重命名。向导无法知道一个文件是否被重命名,或者一个文件被删除并生成了一个不相关的文件。也无法处理诸如计算(初始)值之类的东西。

因此,这种方法仅适用于退化的边缘情况,因此即使在中等规模的项目中也无法长期有效,抱歉。

【讨论】:

  • 谢谢。在 VS2010 中,当我构建数据库项目时,它具有数据库中每个对象的架构,我实际上可以在 IDE 中编辑 SP/UDF。正是这些更改,我只想为项目或解决方案中更改的那些对象跟踪和生成脚本。可以做到吗?截至目前,它创建了一个删除脚本并创建了整个数据库。我是否需要更改任何设置才能执行此操作?
  • 不,真的做不到。 RedGate SchemaComapre 非常擅长。最后,遗憾的是,没有适当的基础设施。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-13
相关资源
最近更新 更多