在 vs2010 中使用 Database 项目部署和应用发布补丁

Posted

技术标签:

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

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

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

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

【问题讨论】:

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

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

【讨论】:

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

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

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

【讨论】:

@bhushan1980:我已经用产品链接和我们的 *** 问题更新了答案。【参考方案3】:

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

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

【讨论】:

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

以上是关于在 vs2010 中使用 Database 项目部署和应用发布补丁的主要内容,如果未能解决你的问题,请参考以下文章

VS 2010中测试驱动型开发

如何防止 VS2010 Database Project Deployment 生成 drop 数据库?

从 vs2010 连接到 mysql 的问题

使用 VS2012 数据库项目:无法打开登录请求的数据库“my_database”

使用低版本的VS打开高版本项目的解决方案(以VS2008打开VS2010开发的项目为例)

VS2017不能生成Database Unit Test项目