74

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

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

4

16 回答 16

123

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

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

于 2016-08-08T16:06:07.833 回答
88

当我使用 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
于 2017-11-16T22:42:47.230 回答
27

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

  1. 关闭 VS 实例。

  2. 删除保存的连接密钥

HKEY_CURRENT_USER\SOFTWARE\Microsoft\VisualStudio\14.0\ConnectionMruList

  1. 重新打开 VS 并重试。
于 2017-01-04T11:06:39.187 回答
18

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

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

Sql

于 2016-11-24T07:35:20.643 回答
12

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

例如,而不是10.10.10.10我写10.10.10.10\,它连接正常。

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

于 2017-11-16T18:22:54.693 回答
2

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

于 2018-07-03T16:10:12.007 回答
2

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

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

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

我的服务器名称是 Azure BTW

于 2019-10-08T15:22:11.343 回答
1

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

于 2018-11-13T15:41:25.433 回答
1

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

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

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

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

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

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

于 2017-05-25T11:26:45.520 回答
0

In my case, I just restarted my machine, and it worked fine.

于 2020-06-22T13:32:31.330 回答
0

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

于 2019-06-05T11:30:06.453 回答
0

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

于 2019-10-09T15:42:11.070 回答
0

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

于 2016-11-02T16:22:27.193 回答
0

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

于 2016-05-26T14:40:03.347 回答
0

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

于 2018-05-14T23:57:14.700 回答
0

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

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

于 2017-06-19T11:11:54.017 回答