我已经使用 VS 2012 创建了数据库项目。模式比较完成后,应该启用更新目标按钮以与目标同步,但它没有启用。我该如何解决这个问题?
我正在使用带有 SP 3 的 VS 2012、SQL Server 2012,
如果有错误请检查错误列表,我在VS中有一个无法识别的单词(但在SQL Server中有),我将其注释掉,重新比较,启用成功。
查看是否有“警告”消息,指出“由于内部错误,无法生成部署计划”。如果是这样,更新和生成脚本按钮将被禁用。
关闭 Visual Studio,导航到包含数据库项目的文件夹并删除所有 (*.dbmdl) 文件。然后重新启动 Visual Studio,重新运行比较架构,此时应启用“更新”按钮。
解决方法:
就我而言。修复错误不是优先任务。我也无法在错误列表中找到任何错误。
只是您不必在源或目标中使用“Visual Studio 数据库项目”。不要使用项目,而是使用已有的脚本创建一个临时数据库。
在源中选择此(或这些)临时数据库和(或)在目标中选择其他数据库。
按钮必须启用。
对我来说,获得差异远比解决问题重要。希望对您有帮助。还有一些即兴创作。
您的数据库项目似乎有没有默认值的 sqlcmd 变量。
参见: http://www.andrewburrow.net/vs2012-schema-compare-buttons-disabled/
希望这有帮助。
每次打开“模式比较”上的“选项”时,您必须再次单击“比较”按钮以激活“更新”按钮。但是,如果第一次不起作用,只需关闭并再次重新打开架构比较文件即可。
对我来说,错误列表中没有可见的错误。这是因为我将“显示生成的问题”下拉菜单设置为“仅构建”;将其更改为“Build + IntelliSense”使我能够看到需要修复的 SQL 错误以启用“生成脚本”和“更新”按钮。
在 SSDT 中,我遇到了启用更新按钮但未启用生成脚本的情况。这是因为我的目标架构是我的本地解决方案(*.sqlproj vs 项目)。
我花了几分钟才意识到目标需要是一个真实的数据库才能正确生成脚本。
毕竟,当您拥有可用的 Update Target 按钮和禁用的 Generate Script 按钮时。
查看您的源是否是数据库,目标是否是 SSDT 项目。
如果是这样,请单击“切换源和目标”按钮。
生成脚本按钮将变为可用。
IE。在架构比较窗口中,SSDT 项目必须是源,数据库必须是目标。
解决方法 2:
就我而言,“更新”按钮呈灰色,因为存在有关我之前创建并添加到项目中的视图的错误警告。 问题在于该视图被编写为使用完整的数据库限定对象命名。例如。 [databasename].[schemaname].[objectname],在 SSMS 中工作正常,但在数据库项目中检查时会出现问题。 如果您使用三部分命名来引用同一数据库项目中的对象,则会在 Visual Studio 中导致错误/警告。
通过将视图定义中的代码更改为 [schemaname].[objectname],删除了错误警告并启用了更新选项。快乐的时光!
通常,当数据库对象在数据库项目内部的单独 sql 文件中可用但不包含在数据库项目本身中时,更新按钮会显示为灰色。我只是将这些 sql 脚本添加到项目中,并在比较架构后启用更新按钮。
在我的例子中,更新按钮被禁用,因为有一个标量函数被修改并且该函数用于计算列定义中。
我的解决方案是:
ALTER TABLE <your table> DROP COLUMN <your computed column>
实际上,我已经设置了目标日期,用户可以在网络表单中选择日期和时间,但问题是一旦选择,然后单击更新按钮,它不会更新所选的日期和时间..我可以知道为什么吗那个??