【问题标题】:VS2010 database project deploy rebuilds every tableVS2010数据库项目部署重建每张表
【发布时间】:2014-08-12 03:19:50
【问题描述】:

我最近在 VS2010 中为现有的 SQL Server 2008 R2 DB 创建了一个数据库项目。我通过在末尾添加 3 个新列更新了 11 个表中的 1 个。然后我更新了 4 个引用该表的视图。

然后我尝试了构建/部署,它只生成一个脚本。

我已经检查了脚本,对于数据库中的每个表,它都生成了代码,这些代码将创建每个表的临时版本,从现有表中复制数据,删除原始数据并重命名副本。

我在这里看到了帖子,它坚持为删除的列重建表,我尝试设置 IgnoreColumnOrder 但没有任何区别。无论如何,这似乎与我的情况无关,所以我并不感到惊讶。

我创建了我的数据库项目,让 DBA 为我提供了一个完整的生产脚本版本,在我的 PC 版本的 SQL Server 上构建了该数据库,然后从中创建了我的初始项目。我认为这不会有任何区别,我已经将表的项目定义与目标 Dev DB 进行了比较,它们是相同的。

我没有勾选“始终重新创建数据库”,并勾选了“如果可能发生数据丢失,阻止增量部署”。不要以为他们与我的问题有任何关系?

有什么想法吗?

【问题讨论】:

  • 您是否尝试过进行架构比较?您可能有排序规则差异或其他导致重建的细微差异。这也可以向您显示有关实际不同之处的更多详细信息。您也可以考虑尝试一个 SSDT 项目(在概念上与 VS2010 DB 项目非常相似),看看是否有任何不同。
  • 感谢您的建议。不幸的是,昨晚我决定作为一种解决方法来保存数据,允许重新创建数据库,然后重新加载数据,这样我就再也找不到原因了。我确实尝试过将架构与 Systest 环境进行比较,但在大多数表上都显示“跳过”,所以无论问题是什么,我都无法找到答案。您的建议是对未来有用的提示。我不认为我可以安装 SSDT。它们不是 SQL Server 2012 附带的吗?我的机器非常关闭,我无法安装已批准软件列表之外的任何内容。
  • 您可能想与尝试 SSDT 的大咖交流。在大多数情况下,我发现它的功能比 VS DB 项目好很多。我认为它可以用完 VS2010 shell,尽管有使用 VS2012 和 VS2013 shell 的选项。可以在这里看到更多:blogs.msdn.com/b/ssdt

标签: sql-server visual-studio-2010 database-project


【解决方案1】:

我找到了数据库的备份,并按照 Peter 的建议运行了 Schema Compare。不同之处在于目标数据库对大多数表进行了 PAGE 压缩,但项目定义中没有。

【讨论】:

  • 很高兴您发现了这个问题。这些是最容易错过的一些事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多