应用程序无法连接到azure vm上的本地sql DB

时间:2018-05-01 07:47:56

标签: sql-server azure virtual-machine azure-virtual-network

我已将数据库和应用程序从运行在azure VM上的Win 2012 r2服务器迁移到运行在azure VM上的2016服务器。身份验证存储在本地运行的sql 2012数据库服务器中,该服务器也运行SSRS。

.net core 1.1应用程序在尝试通过此连接连接到新服务器时无法在新服务器上看到数据库:" AuthenticationConnection":" Server = xxxxxx.australiasoutheast.cloudapp.azure .COM,1433;数据库= XXXXXX;用户ID = xxxxxx;密码= XXXXXXX;" - 并报告错误:

  

System.InvalidOperationException:引发了异常   可能是由于短暂的故障。如果要连接到SQL   Azure数据库考虑使用SqlAzureExecutionStrategy。 --->   System.Data.SqlClient.SqlException:与网络相关或   建立连接时发生特定于实例的错误   SQL Server。服务器未找到或无法访问。校验   实例名称正确且SQL Server配置为   允许远程连接。 (提供者:TCP提供者,错误:0 - A.   连接尝试失败,因为连接方没有正确   一段时间后回复,或建立连接失败   因为连接的主机无法响应。)--->

此连接在旧的2012服务器上本地工作。在尝试使用dns名称通过SSMS在新服务器上本地连接时,数据库会报告错误:

  

发生网络相关或实例特定错误   建立与SQL Server的连接。找不到服务器或   无法访问。

但我可以通过SSMS访问它,而不是使用dns名称,但使用本地服务器名称。

我可以从机器外部访问sql数据库就好了。当从服务器外部运行调试应用程序时它也可以很好地连接。只有在尝试使用dns名称从VM内部访问数据库时才会这样做。

所有端口都已打开,并尝试关闭防火墙而不起作用。我确保混合模式auth在sql数据库上。我已经安装了所有可用的更新。 旧服务器和新服务器之间设置的唯一区别是:

  • 新服务器位于azure虚拟网络中
  • 新服务器具有静态IP(强制进入虚拟网络)
  • 新服务器是Windows 2016

我认为它与本地数据库虚拟网络的DNS引用有关,这引起了一些问题,但我对虚拟网络知之甚少,不知道该尝试什么。如果有人有任何想法,请告诉我 - 谢谢。

1 个答案:

答案 0 :(得分:0)

我已更改应用中的连接字符串以使用本地服务器名称而不是dns名称,这允许它进行通信。至于为什么FQDN不起作用,我不知道。它在Windows Server 2012中完成。环境中有些东西不同但我无法找到它。