25

直到今天,我都能够使用 Visual Studio 2012 中的架构比较功能从数据库项目中更新数据库。但是现在,对于一个项目,我可以进行比较,但更新按钮是灰色的。

我可以使用其他项目来更新其他数据库,但是从这个项目中我无法更新任何数据库。我没有收到任何错误,该功能不可用。

使用发布仍然有效。也可以从数据库更新项目,而不是相反。

有谁知道为什么我不能通过 Schema Compare 更新数据库?

4

10 回答 10

41

比较后检查屏幕底部,那里显示状态消息。如果数据库项目中存在编译错误,我已经看到了这个问题。解决错误后关闭并重新打开比较对话框。重新运行比较,更新按钮应该再次可用。

于 2013-09-05T20:53:18.527 回答
7

对我来说,错误列表窗格和输出窗格在 Visual Studio 2015 中没有显示任何内容。只有在构建了我所针对的数据库项目之后,我才能在输出窗格中看到错误(但仍然看不到错误列表窗格)。修复这些错误后,更新按钮不再灰显。

于 2017-03-08T13:10:12.057 回答
7

您必须检查数据库用户和数据库架构。通常,如果数据库用户未在 DB Project 中正确复制,则模式比较不起作用。

于 2016-03-15T15:31:26.037 回答
3

Ran into the same problem myself. As mentioned above, the normal Visual Studio Error List will list errors that block update... but further, there will also be warnings. One of the options that's enabled by default is that data loss blocks the update. That's the problem. Even though it's only a warning condition, any possible data-loss is functionally an error unless you change this flag.

imho, this is a pretty severe UI failure on MS's part, but what are you gonna do?

于 2013-10-28T14:18:20.170 回答
1

您需要确保所有 SQLCMD 变量都具有默认值。

右键单击解决方案资源管理器中的项目并选择属性。

在左侧的选项卡上,转到 SQLCMD 变量并在提供的列中输入默认值。

再次运行架构比较后,更新按钮现在应该可用。

于 2014-07-07T17:45:06.757 回答
1

对我有用的是包括架构。我选择仅包含某些表/过程等。如果包含表和过程的架构也未勾选,则导入不包含元素。

于 2015-05-11T10:07:09.227 回答
0

对我来说,我更改了添加表格的顺序。如果任何两个表之间存在任何关系,则必须将父表然后从属表添加到数据库中。

于 2018-09-09T15:53:46.033 回答
0

架构不仅必须在您的数据库项目中,而且如果它在数据库上发生更改,它必须保持最新。在 DBA 在我的项目中的架构上授予数据库中新 sql 登录的 exec 权限后,更新停止工作。在应用到我的项目的任何存储过程更改多次失败后,我更新了项目,只选择了已更改的架构。更新数据库项目中的架构后,更新再次开始工作。我在所有更新中都包含架构。希望这可以帮助。

于 2019-02-22T20:05:55.677 回答
0

在 Schema Compare 中,转到Options -> General -> check*Ignore authorizer*

于 2019-09-30T05:38:22.673 回答
0

就我而言,问题在于我安装了更新版本的 SQL Server 和 SSMS (2016)。您必须始终确保安装了正确版本的 Sql Server Data Tools 以匹配您正在比较的版本。这是我使用 Visual Studio 2017 验证的 SQL Server 2005-2017 SSDT 的链接:

https://docs.microsoft.com/en-us/sql/ssdt/download-sql-server-data-tools-ssdt?view=sql-server-2017

于 2018-09-04T17:24:05.133 回答