无法使用架构比较进行更新

时间:2013-06-06 17:54:46

标签: sql-server visual-studio-2012 schema-compare

到目前为止,我能够使用Visual Studio 2012中的Schema Compare功能从数据库项目更新数据库。但现在,对于一个项目,我可以进行比较,但更新按钮显示为灰色。

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

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

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

10 个答案:

答案 0 :(得分:35)

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

答案 1 :(得分:6)

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

答案 2 :(得分:5)

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

答案 3 :(得分:2)

自己陷入同样的​​问题。如上所述,正常的Visual Studio错误列表将列出阻止更新的错误......但是,还会有警告。默认情况下启用的其中一个选项是数据丢失会阻止更新。那就是问题所在。即使它只是一个警告条件,除非你改变这个标志,否则任何可能的数据丢失在功能上都是错误的。

imho,这是MS的一个相当严重的UI失败,但是你要做什么?

答案 4 :(得分:1)

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

答案 5 :(得分:0)

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

在Solution Explorer中右键单击项目,然后选择Properties。

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

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

答案 6 :(得分:0)

就我而言,问题是我安装了SQL Server和SSMS的更新版本(2016)。您必须始终确保安装了正确版本的Sql Server数据工具,以匹配进行比较的版本。这是我验证与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

答案 7 :(得分:0)

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

答案 8 :(得分:0)

不仅架构必须存在于数据库项目中,而且如果在数据库中进行更改,还必须保持最新。在DBA向我的项目中的架构上的数据库中的新sql登录授予exec权限后,更新退出工作。在将任何存储过程更改多次失败后,将其应用于我的项目,我更新了该项目,仅选择已更改的架构。在数据库项目中更新架构之后,更新将再次开始工作。我在所有更新中都包含了架构。希望这会有所帮助。

答案 9 :(得分:0)

在架构比较中转到选项-> 常规->检查*Ignore authorizer*