到目前为止,我能够使用Visual Studio 2012中的Schema Compare功能从数据库项目更新数据库。但现在,对于一个项目,我可以进行比较,但更新按钮显示为灰色。
我可以使用其他项目来更新其他数据库,但是从这个项目我无法更新任何数据库。我没有收到任何错误,功能不可用。
使用发布仍然有效。同样从数据库更新项目也可以,但不是相反。
有谁知道为什么我无法通过Schema Compare更新数据库?
答案 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*