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

时间:2016-05-26 14:08:32

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

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

它曾经在几个月前正常运作。有没有解决方法?我找不到任何。

17 个答案:

答案 0 :(得分:112)

我发现使用 username @ servername 作为连接用户名将解决Azure数据库发生时的问题。我曾经历过一段历史性的工作,没有突然停止,然后这已经为我解决了这个问题。

例如,当使用 mylogin 的登录并连接到 myserver.database.windows.net 时,如果我使用 mylogin@myserver.database。 windows.net 作为我赢得的用户名"来源不可用"问题。

答案 1 :(得分:65)

当我使用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
  7. 防止错误返回

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

      如果您想解决此错误,请按照以下方法重现错误。

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

答案 2 :(得分:24)

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

  1. 关闭VS实例。

  2. 删除

  3. 中保存的连接密钥
      

    HKEY_CURRENT_USER \ SOFTWARE \微软\ VisualStudio的\ 14.0 \ ConnectionMruList

    1. 重新打开VS并重试。

答案 3 :(得分:16)

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

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

Sql

答案 4 :(得分:9)

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

e.g。而不是10.10.10.10我写10.10.10.10\并且连接好了。

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

答案 5 :(得分:1)

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

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

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

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

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

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

答案 6 :(得分:1)

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

答案 7 :(得分:0)

当用户没有执行架构比较操作https://msdn.microsoft.com/en-us/library/jj889462(v=vs.103).aspx

所需的权限时,会出现相同的问题

答案 8 :(得分:0)

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

不确定原因!但是,它的工作方式如下:)

答案 9 :(得分:0)

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

答案 10 :(得分:0)

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

答案 11 :(得分:0)

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

答案 12 :(得分:0)

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

答案 13 :(得分:0)

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

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

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

我的服务器名称是Azure BTW

答案 14 :(得分:0)

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

答案 15 :(得分:0)

就我而言,我只是重新启动了机器,然后一切正常。

答案 16 :(得分:-1)

在尝试了许多不同的建议后,这对我有用。

  • 取决于不可用的内容,来源或目标。选择清除源/目标。
  • 保存对文件的更改
  • 重新打开文件并再次选择新连接(在我的案例中为Azure数据库)
  • 再次单击比较,现在可以正常工作。