SQL 架构比较错误“目标不可用”

当将 VisualStudio2015Update2中的 SQLServer 项目与数据库 SQLServer2012进行比较时,当更改方向时,将显示错误“ Target is not 可用”或“ Source is 可用”。

几个月前它还能正常工作。有什么变通方法吗? 我找不到。

31833 次浏览

一个进程正在阻塞数据库。在执行 kill [ spid ]之后,它又工作了。

我发现使用 用户名@servername作为连接的用户名可以修复在 Azure 数据库上发生的问题。我有过一些关系,这些关系一直以来都是有效的,但是没有突然停止,然后这个为我解决了这个问题。

例如,当使用 我的登录名的登录名并连接到 Myserver.database.windows.net时,如果我使用 Mylogin@myserver. database.windows.net作为用户名,就不会出现“源不可用”的问题。

当用户没有执行模式比较操作 https://msdn.microsoft.com/en-us/library/jj889462(v=vs.103).aspx所需的权限时,也会出现同样的问题

其他的答案对我不起作用,因为我是直接使用 SQL Server 而不是 Azure,但在检查了连接字符串的高级属性后,我看到认证被设置为“未指定”,网络库是空的。

我改变了它们,它又起作用了。相当奇怪,因为它让我为连接选择数据库。它只是不允许我比较模式给出的提到的“源不可用”消息。

Sql

在尝试了这里的一切之后,下面的方法对我很有效:

  1. 关闭 VS 实例。

  2. 中删除保存的连接键

MicrosoftVisualStudio 14.0 ConnectionMruList

  1. 重新打开 VS,然后再试一次。

我在打开以前保存的. scmp 文件时出现了这个错误,该文件在最初创建时成功地工作了。

问题是由于保存的连接字符串中缺少密码造成的。源代码使用了集成身份验证,因此 VS 对此并不抱怨。

再次选择目标连接没有帮助,可能是因为 VS 使用了缓存的连接字符串。

我通过将 Password参数添加到文件中的连接字符串中来解决这个问题。有两个位置指定了目标连接字符串(XPath 如下所示) :

  • /SchemaComparison/TargetModelProvider/ConnectionBasedModelProvider/ConnectionString
  • /SchemaComparison/SchemaCompareSettingsService/ConfigurationOptionsElement/PropertyElementName[Name='TargetConnectionString']

在这些编辑之后,我重新打开了. scmp 文件,并成功地运行了比较。

我指的是 SQL 服务器通过 IP 和给我这个问题。 我通过它的 DNS 名称和它提到的问题得到了解决!

不知道为什么! 但是,它是这样工作的:)

对我来说,是 server name字段中服务器 IP 地址末尾的 \符号修复了它。很奇怪。

例如,我写 10.10.10.10\而不是 10.10.10.10,这样就可以连接了。

注意: 我正在使用 VisualStudio2017。

在 VisualStudio2017中使用 SQLServer 身份验证但不保存密码时会出现此错误。我已经用 Visual Studio 15.6.3和 SQL Server 12.0.5000.0测试了这些步骤

修正错误

这修复了问题,但是在下次重新启动 VisualStudio 时,问题又回来了。

  1. 转到 工具-> SQL Server-> 新的模式比较..。
  2. 选择 选择“来源”选择目标
  3. 选择 选择“连接”
  4. 最近的连结下,查找给出此错误的所有连接
  5. 对于其中的每一个,右键单击连接并选择 从历史中删除
  6. 重新启动 VisualStudio

防止错误返回

  1. 完成上述 修正错误
  2. 在设置连接详细信息时,请选中 记住密码复选框。

重现错误

如果您想对此错误进行故障排除,以下是我如何设法重现它的。

  1. 转到 工具-> SQL Server-> 新的模式比较..。
  2. 选择源和目标连接
  3. 对于至少一个连接,使用 SQLServer 身份验证,但是 不要选择 记住密码
  4. 比较一下
  5. 确保它没有错误地工作
  6. 重新启动 VisualStudio
  7. 重复步骤1-4,使用完全相同的连接细节

当我在 SQLServer 对象资源管理器窗口中右键单击数据库名称并从中选择 Schema Compare 时,我可以让它工作。如果我尝试使用“工具”菜单中打开的“模式比较”窗口,那么它永远不会起作用。

我得到的结果与这里的其他答案是混合的。我使用的是另一个开发人员放在一起的保存比较文件。这是一个独立的 SQLServer,而不是蔚蓝色的数据库。比较有时会有效,而其他时候则不会(给出目标是不可用的错误)。在我的例子中,保存的比较只是使用服务器名称,而没有使用 FQDN。当我换成 FQDN 的时候,它对我起作用了。我不确定这个问题是否会再次出现,但是我想我会加入这个信息,以防它对其他人有用。

我在2015年 Visual Studio Professional 版本中尝试过,在 SQL 数据比较时遇到了这个问题,当我使用主机名而不是数据库的 IP 地址时,它对我很有效。希望这能解决这个问题。

我在2015年 VS 工作室也遇到过同样的问题。 但是由于数据库在我的 PC 上,我使用的是 localhost 而不是计算机的实际名称。 我只是手动选择计算机服务器作为在视觉工作室本身的命题和它的工作。

虽然这个页面上的一些解决方案有时对我有用,但不是所有时候。 但我所描述的这种方法,在大多数情况下对我有效

指定服务器名称时,请将协议和端口指定为

Servername: tcp: my-server-name,1443

我的服务器名称是 Azure BTW

这里提供的所有答案都不适合我; 我使用的是 SQLServer 和 VisualStudio2017。通过将服务器的 IP 地址添加到主机文件中,然后在连接框中使用该主机名,我可以强制进行比较。

对我来说,我刚刚重新启动了我的机器,它工作得很好。

screenshot

我的操作系统: windows 11

查看计算机上的下列程序(附件) ,右键单击并“停止”当前正在运行的“ SQL 服务器(SQLEXPRESS)”副本。

然后我试图再次打开它,它给了我同样的错误,像以前一样... 虽然在一分钟内这样做,程序启动正常像以前一样。

我只是想让你知道我的“补救措施”以防其他人也遇到同样的问题。