【问题标题】:SQL Schema Comparison Error "Target is unavailable"SQL 架构比较错误“目标不可用”
【发布时间】:2016-05-26 14:08:31
【问题描述】:

将 Visual Studio 2015 Update 2 中的 SQLServer 项目与数据库 SQL Server 2012 进行比较时,在更改方向时会显示错误“目标不可用”或“源不可用”。

几个月前它曾经正常工作。有什么解决方法吗?我找不到。

【问题讨论】:

  • 在 Visual Studio 开发人员社区中存在一个问题:developercommunity.visualstudio.com/content/problem/73094/…。我建议对该问题进行投票,以便引起注意和解决。
  • 现在是 2019 年,在 VS2015 和 VS2017 中仍然是一个问题。山姆的回答没有帮助。 sotn 的回答有帮助,但只有一次。创建一个新的临时数据库用户是最后的解决方法。

标签: sql-server visual-studio-2015 visual-studio-2017


【解决方案1】:

我发现使用 username@servername 作为连接用户名可以解决 Azure 数据库发生的问题。我的连接在历史上一直有效而没有突然停止,然后这已经为我解决了。

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

【讨论】:

  • 这很棒。解决了几个月的挫折!我发现它只适用于 username@myserver。我不需要提供 database.windows.net 部分。
  • 嘿@robs,起初我也是这样做的,没有使用完全限定的服务器地址。当我这样做时,我发现问题在一段时间后又回来了,这就是我编辑这篇文章的原因。请记住,如果问题再次发生,您可能需要转到完整的服务器名称。
  • 你是天才!
  • 今天在 VS2017 上为我工作。
  • 我在使用 username@myserver.database.windows.net 时遇到问题(尽管我的客户端 IP 在 Azure 门户中列出,但我收到了关于 Azure SQL 防火墙的无穷无尽的提示)。当我将其更改为username@myserver(没有database.windows.net)时,它再次起作用。很奇怪。
【解决方案2】:

当我使用 SQL Server 身份验证但不保存密码时,我在 Visual Studio 2017 中收到此错误。我已经使用 Visual Studio 15.6.3 和 SQL Server 12.0.5000.0 测试了这些步骤

修复错误

这解决了问题,但下次我重新启动 Visual Studio 时问题又出现了。

  1. 转到 工具 -> SQL Server -> 新架构比较...
  2. 选择选择来源选择目标
  3. 选择选择连接
  4. 最近的连接下,找到出现此错误的所有连接
  5. 对于其中的每一个,右键单击连接并选择从历史记录中删除
  6. 重启 Visual Studio

防止错误再次出现

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

重现错误

如果您想解决此错误,我可以通过以下方式重现它。

  1. 转到 工具 -> SQL Server -> 新架构比较...
  2. 选择源和目标连接
  3. 对于至少一个连接,使用SQL Server 身份验证,但不要选择记住密码
  4. 比较
  5. 确保它正常工作
  6. 重启 Visual Studio
  7. 重复步骤 1-4,使用完全相同的连接详细信息

【讨论】:

  • 多亏了这一点,我们才能在 2015 年与 2015 年进行 s**** 模式比较。感谢@Sam!
  • 太棒了!为我工作。我注意到不保存密码意味着即使您尝试再次选中该框,但没有尝试删除它,缓存的历史记录项仍将保持“未保存”。谢谢!
  • 这几乎对我有用,在您修复错误列表并重新打开 VS 之后,我的所有历史记录重新出现,随后的连接再次失败。有效的(至少这次)是删除所有历史记录,然后立即再次连接而不关闭对话。可悲的是,我怀疑我会在一两周内再次回到这个问题......
  • 酷,没想到这真的有帮助,但它有效,Thnx .. 编辑 -- 我的是 VS 2015..
  • 这个解决方案在 VS 2017 中非常适合我。+1
【解决方案3】:

在这里尝试了一切之后,这对我有用:

  1. 关闭 VS 实例。

  2. 删除

  3. 中保存的连接键

HKEY_CURRENT_USER\SOFTWARE\Microsoft\VisualStudio\14.0\ConnectionMruList

  1. 重新打开 VS 并重试。

【讨论】:

  • 我在源连接方面遇到了同样的问题:“源不可用”这些步骤立即为我解决了错误。
  • 我也面临同样的问题,这些步骤解决了错误。非常感谢。
  • 仅供参考,删除连接密钥解决了我在 VS 2017 中的问题。
  • 我正在使用 VS 2017 (15.6),ConnectionMruList 注册表项甚至不存在。有人知道它搬到哪里了吗?
  • 使用 VS2017 对我不起作用,在任何 14.0x 或 15.0x 文件夹中都找不到密钥
【解决方案4】:

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

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

【讨论】:

  • 这对我有用大约 3 次,现在我回到了第 1 格。我必须做一个组合 1) 关闭 VS,2) 清除注册表中的 MRU 列表,以及 3 ) 以上。
  • @LarryBud 这对我有用,但我认为我们应该提供更多背景知识,How to Clear MRUVisual Studio 2015
  • 这只是在 VS2017 中再次发生。身份验证组合将不再“粘连”并在每次打开连接时重置。这次对我有用的是从列表中删除连接,选择不同的连接,然后添加回我真正想要的连接。
  • 删除和重新添加连接也对我有用
  • 这在 VS2017 中也适用于我,但需要注意的是,我必须在数据库服务器中创建第二个用户,并将其用于目标。如果您比较同一服务器上的 2 个数据库,那么您似乎必须使用 2 个单独的用户名和密码,这意味着您不能使用 Windows 身份验证,因为这将始终从您的桌面登录进行身份验证,您必须使用 SQL 身份验证.就我而言,我作弊并在源上使用 SA 帐户,在目标上使用 Web 应用用户。
【解决方案5】:

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

例如而不是10.10.10.10 我写10.10.10.10\ 并且连接正常。

注意:我使用的是 Visual Studio 2017。

【讨论】:

  • 一开始可以,但是重启Visual Studio后,问题又开始出现了。
【解决方案6】:

这里的其他答案的结果好坏参半。我正在使用另一个开发人员放在一起的保存比较文件。这是一个独立的 SQL Server,而不是一个 azure 数据库。比较有时会起作用,但有时会起作用(给出目标不可用错误)。在我的情况下,保存的比较只是使用服务器名称而不是使用 FQDN。当我更改为 FQDN 时,它对我有用。我不确定问题是否会再次出现,但我想我会添加此信息以防它对其他人有用。

【讨论】:

  • 好的。所以现在我又遇到了同样的问题。我希望这里有某种日志记录来告诉您问题所在,因为服务器/数据库显然是可用的。
  • 收到服务器名和 FQDN 错误。刚刚尝试了IP地址,它起作用了。显然是某种 Servername 缓存问题。弄乱服务器名称(或添加备用名称)可能会为人们解决这个问题。
  • 这次它又失败了,但后来我删除了历史记录,重新启动 VS 并再次添加了连接(一个字母的大小写不同)并且有效。这是一个很棒的功能,但解决这个问题有点烦人
【解决方案7】:

虽然此页面上的一些解决方案有时对我有用,但并非总是如此。 但是我所描述的这种方法在大多数情况下都对我有用

当您指定服务器名称时,请指定协议和端口

服务器名称:tcp:my-server-name,1443

我的服务器名称是 Azure BTW

【讨论】:

    【解决方案8】:

    打开以前保存的 .scmp 文件时出现此错误,该文件在最初创建时成功运行。

    问题是由于保存的连接字符串中缺少密码引起的。源使用集成身份验证,因此 VS 没有抱怨。

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

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

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

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

    【讨论】:

    • 我正在尝试使用此答案,但无法找到这些位置。这些是目录路径吗?
    • 这些路径是 .scmp 文件中的 XPATH。我试过这个并没有解决我的问题。不过可能对其他人有用。
    【解决方案9】:

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

    【讨论】:

    • 目前尚不清楚这是否与所提出的问题有关。作为对这个问题的评论可能会更好。如果您没有足够的代表发表评论,请参阅tour 了解如何获得代表。
    【解决方案10】:

    一个进程阻塞了数据库。执行 kill [spid] 后,它再次工作。

    【讨论】:

      【解决方案11】:

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

      【讨论】:

        【解决方案12】:

        我指的是通过 IP 的 SQL 服务器并给了我这个问题。 我通过它的 DNS 名称引用它,问题就解决了!

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

        【讨论】:

          【解决方案13】:

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

          【讨论】:

            【解决方案14】:

            我实际上在 VS Studio 2015 中遇到了同样的问题。 但是由于数据库在我的 PC 上,所以我使用的是 localhost 而不是计算机的实际名称。 我只是按照 Visual Studio 本身的提议手动选择了计算机服务器,它就可以工作了。

            【讨论】:

              【解决方案15】:

              这里提供的答案都不适合我;我正在使用 SQL Server 和 Visual Studio 2017。我能够通过将服务器的 IP 地址添加到我的主机文件中来强制进行比较,然后在连接框中使用该主机名。

              【讨论】:

                【解决方案16】:

                就我而言,我刚刚重新启动了我的机器,它运行良好。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2022-06-13
                  • 1970-01-01
                  • 2014-03-25
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2015-05-30
                  相关资源
                  最近更新 更多