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