Visual Studio 数据库项目能否为每个已更改的对象创建单独的差异脚本?

Posted

技术标签:

【中文标题】Visual Studio 数据库项目能否为每个已更改的对象创建单独的差异脚本?【英文标题】:Can Visual Studio Database Projects create individual diff scripts for each object that has changed? 【发布时间】:2013-04-12 14:00:12 【问题描述】:

我开始在 Visual Studio 2010 中使用数据库项目,我知道它将生成一个脚本来部署所有更改(例如,将表添加到列、新的 ALTER PROC 语句等)。

是否可以配置数据库项目,以便为每个对象获取单独的文件?例如,如果添加了三个表和列,我是否可以为每个包含特定表的 ALTER TABLE ADD COLUMN 语句的表获取一个 SQL 文件?

【问题讨论】:

【参考方案1】:

我很确定这个答案将是“否”。 DB 和 SQL 项目的真正设计目的是查看项目的状态,将其与数据库的状态进行比较,并一次性使它们相同。我不确定在这种情况下您要完成什么。您能否提供更多详细信息,说明您为什么需要或想要为每个已更改的对象生成单独的 ALTER 脚本?

【讨论】:

如果我的数据库升级由于某种原因失败,我希望能够轻松知道哪个更新失败。如果每个对象都有单独的脚本,我可以一次执行一个脚本,如果其中一个更新不起作用,我可以失败。 好吧,发布脚本中确实有各种“打印”语句,它们告诉您脚本当前在哪个区域工作。这可能有助于查明问题。如果您手动运行它,您需要捕获脚本的输出或检查输出。如果可能的话,我还会确保您在事务中运行整个事情。如果在正常模式更改推送中出现错误,这将允许整个更改集回滚。它对 Pre/Post Deploy 脚本没有帮助,但如果需要,您可以在此处添加一些跟踪以提供帮助。

以上是关于Visual Studio 数据库项目能否为每个已更改的对象创建单独的差异脚本?的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2015,使用 GIT 扩展和数据库项目 .dbmdl 文件

Visual Studio 2008 数据库项目部署基线

Visual Studio 项目正在引用已删除的共享项目

Visual Studio 无法识别已安装 NuGet 包的头文件

在Visual Studio中恢复已删除的项目

使用单 GPU 和 Visual Studio 进行 Cuda 调试