Visual Studio 2017中SQL Server模式比较

6
我正在尝试比较同一服务器上两个数据库的模式。
这两个数据库的名称分别为benchmarkdbbenchmarkdb_dev
在Visual Studio 2017中,我转到工具> SQL Server>新建架构比较…
从标记为“选择源”和“选择目标”的两个下拉菜单中(如下图所示),我想将benchmarkdb选择为源,将bencmarkdb_dev选为目标。

enter image description here

点击选择源后,将弹出“选择源模式”窗口,然后我点击“选择连接…”按钮,又弹出了一个窗口。最新的弹出窗口(如下图右侧所示)显示了我正在尝试比较的两个数据库。

enter image description here

然而,当我选择源或目标之一后,所有弹出窗口都关闭了,但是"选择源..."或"选择目标..."下拉菜单中没有任何内容。实际上,它只是回到了看起来像第一张图片的状态。
是否有解决方法,这样我就可以比较数据库之间的模式?
更新:
我已经在VS 2012、2015和2017上尝试过了。所有的问题都面临同样的问题。VS软件和系统软件都是最新的。如果有帮助,下面是我使用的一些软件版本。
Windows 7 Enterprise SP1
VS 2012、2015和2017
SQL Server 2014
.NET Framework v4.7.02053

你尝试过以管理员身份运行Visual Studio吗? - Vikrant More
1
不建议在任何 SQL 相关的事情上使用 VS 2017。许多工具和插件仍然缺失或只部分功能,包括 SSDT。 - Jacob H
@VikrantMore 是的,我已经尝试以管理员身份运行VS了。但我仍然面临着同样的问题。 - ccbadger
@JacobH 我之前不知道这个问题。这个问题只存在于2017版本吗?还是其他版本也有这个问题,我也应该避免使用? - ccbadger
我遇到了相同的问题: - Mike
显示剩余6条评论
3个回答

7
好的,我成功解决了问题。 首先,您需要从Microsoft页面安装SSDT。只需在Google上搜索即可。 确保在启动Installer(在修改时)时还将其列在单独的组件中。只需要SQL Server数据库(我可以选择集成服务和其他3个)。
接下来,在模式比较模态框中为连接选择“从历史记录中删除连接”。
此时,我关闭了VS,以确保连接不再出现在历史记录中。下次启动VS时,您应该不会在历史记录中看到有问题的连接。
重新创建连接(我选中了“记住密码”),然后就可以使用模式比较了。
我不是很确定,但在绝望情况下,我还安装了“Redgate ReadyRoll Core”、“Redgate SQL Prompt Core”和“Redgate SQL Search”。我认为这不重要,但如果其他方法都失败了...
编辑:这适用于2台计算机,与VS版本似乎没有关联。

1
清除历史记录并重新启动Visual Studio最终让我成功了。谢谢。 - David Yates

2
我也遇到了同样的问题,但我不知道是否有相同的根本原因。
我的问题是在将数据库从Windows服务器上的SQL Server更改为Linux容器上的SQL Server后开始出现的。模式比较似乎接受了我的选择,但数据库字段实际上从未填充,我无法执行比较。
解决该问题需要两个步骤:
1. 更新Visual Studio(使用Visual Studio内部的标准更新程序)。 2. 将Visual Studio的SQL Server开发工具(SSDT)插件更新为支持Linux上的SQL Server的预览版本。下载链接在这里
在完成这两个更新后,我可以像在Windows上的SQL Server一样选择数据库并在项目和Linux上的SQL Server之间执行模式比较。

0

如果运行本地数据库,请检查您正在使用的SQL Management Studio版本

我在运行Visual Studio Pro 2017和安装了SQL Server 2017的SQL管理工具v18.6时遇到了同样的问题。 我尝试了以上所有解决方案,但没有成功 即使回到Visual Studio 2015对我也没有用。然而,改回SQL Management Studio v17.9.1确实起作用了。

现在没有任何问题了。 我可能会再次尝试升级Visual Studio到2017,看看现在是否可行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接