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


73

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

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


在Visual Studio开发人员社区中存在一个问题:developercommunity.visualstudio.com/content/problem/73094/…。我建议对该问题进行投票,以使其得到关注和解决。
山姆

它是2019年,在VS2015和VS2017中仍然是一个问题。山姆的回答没有帮助。sotn的回答很有帮助,但只有一次。创建新的临时数据库用户是最后的解决方法。
user5226582'1

Answers:


122

我发现使用username @ servername作为连接的用户名可以解决在Azure数据库上发生的问题。从历史上看,我以前没有进行过连接,但是突然停止,然后为我修复了它。

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


2
太好了 解决了数月的无奈!我发现它仅适用于username @ myserver。我不需要提供database.windows.net部分。
抢劫

嗨,@ robs,起初我做了同样的事情,没有使用完全限定的服务器地址。我发现问题在一段时间后又回来了,这就是为什么我像以前那样编辑这篇文章。请记住,如果再次发生此问题,则可能需要输入完整的服务器名称。
Stacy Vicknair '16

你真是天才!
标记

今天为我在VS2017上工作。
艾蒂安·朱诺

我遇到了问题username@myserver.database.windows.net(尽管我的客户端IP已在Azure Portal中列出,但我仍无休止地收到有关Azure SQL防火墙的提示)。当我将其更改为username@myserver(不带database.windows.net)时,它又可以工作了。奇怪的。

84

当我使用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年与s ****模式进行比较。感谢@Sam!
杰克·弗罗斯特

辉煌!为我工作。我注意到,不保存密码意味着即使您再次尝试选中该复选框,但也没有尝试删除它,缓存的历史记录项目仍将保持“未保存”状态。谢谢!
pcdev

如前所述,这几乎对我有用,在修复了错误列表并重新打开VS之后,我的所有历史都重新出现,随后的连接再次失败。有效的方法(至少这次是)是删除所有历史记录,然后立即重新连接而不关闭对话框。可悲的是,我怀疑我会在一两个星期后再次遇到这个问题....
Matt

酷,没想到这将真正帮助,但它的作品,日Thnx ..编辑-我的是2015年VS ..
伊尔凡

1
该解决方案在VS 2017上对我来说非常完美。+1
Roberto

27

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

  1. 关闭VS实例。

  2. 删除中的已保存连接密钥

HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ VisualStudio \ 14.0 \ ConnectionMruList

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

我对源连接有同样的问题:“源不可用”这些步骤立即为我解决了错误。
David Alpert

我也面临着同样的问题,这些步骤解决了该错误。非常感谢。
Hitesh Patel

1
仅供参考,删除连接键解决在2017年VS我的问题
戴夫·梅森

3
我正在使用VS 2017(15.6),ConnectionMruList注册表项甚至不存在。有人知道它被搬到哪里吗?
山姆

3
使用VS2017对我不起作用,在任何14.0x或15.0x文件夹中都找不到密钥
pcdev

18

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

我更改了它们,然后又恢复了工作。有点奇怪,因为它让我选择了用于连接的数据库。只是不会让我比较给出上述“源不可用”消息的架构。

SQL


4
这对我来说大约工作了3次,现在我回到第1方。我必须执行以下操作:1)关闭VS,2)清除注册表中的MRU列表,以及3)以上。
LarryBud

@LarryBud这对我有用,但是我认为我们应该提供更多背景,如何清除MRU,以及Visual Studio 2015
David Rogers

2
这只是在VS2017中再次发生。身份验证组合将不再“坚持”,并且每次打开连接时都会重置。这次对我有用的是从列表中删除连接,选择其他连接,然后重新添加我实际想要的连接。
库夫斯

删除并重新添加连接对我也很有效
Shaun Rowan

在VS2017中,这对我也有效,但要注意,我必须在数据库服务器中创建第二个用户,并将其用于目标。如果您比较同一服务器上的2个数据库,那么您似乎必须使用2个单独的用户名和密码,这意味着您不能使用Windows身份验证,因为它将始终通过桌面登录名进行身份验证,因此必须使用SQL身份验证。就我而言,我欺骗并使用了源上的SA帐户,并使用了目标上的Web应用程序用户。
shawty

12

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

例如而不是10.10.10.10我写10.10.10.10\,它连接确定。

注意:我正在使用Visual Studio 2017。


起初这是可行的,但是在重新启动Visual Studio之后,问题又开始发生。
山姆

2

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


好。所以现在我又遇到了同样的问题。我希望这里有某种日志记录可以告诉您问题出在哪里,因为服务器/数据库显然可用。
迈克(Mike)

服务器名称和FQDN出现错误。刚刚尝试了IP地址,它就起作用了。显然是某种Servername缓存问题。弄乱服务器名称(或添加备用名称)可能会解决此问题。
迈克(Mike)

1
这次再次失败了,但是后来我删除了历史记录,重新启动了VS并再次添加了连接(一个字母的大小写有所不同),并且可以正常工作。这是一个很棒的功能,但是解决此问题变得有些烦人
Mike

2

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

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

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

我的服务器名称是Azure BTW


1

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

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

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

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

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

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


我正在尝试使用此答案,但无法找到这些位置。这些是目录路径吗?
罗恩C

这些路径是.scmp文件中的XPATH。我尝试了这个,但并没有解决我的问题。可能对其他人有用。
迈克(Mike)

1

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


目前尚不清楚这是否与所提出的问题有关。作为对该问题的评论,可能会更好。如果您没有足够的代表来评论,请参见导览以获取代表。

0

进程正在阻止数据库。执行一次kill [spid]后,它再次起作用。




0

当我在SQL Server Object Explorer窗口中右键单击数据库名称并从中选择Schema Compare时,我可以使它工作。如果我尝试使用从“工具”菜单中打开的“架构比较”窗口,则它将永远无法使用。


0

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


0

这里提供的答案都没有对我有用;我正在使用SQL Server和Visual Studio2017。通过将服务器的IP地址添加到主机文件中,然后在连接框中使用该主机名,可以强制进行比较。


0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.