.NET SQL Server连接的名称和IP行为有所不同

.NET SQL Server连接的名称和IP行为有所不同,sql,asp.net,sql-server,web,asp.net-web-api,Sql,Asp.net,Sql Server,Web,Asp.net Web Api,不确定这是否是StackOverflow问题,但我们在ASP.NET 4 web应用程序中遇到了这个非常奇怪的问题。 因此,有一个到SQL Server的典型连接字符串,其数据源在web.config中指定 SQL Server在虚拟机上运行,与Web虚拟机运行在同一主机上。它们在一个网络中。如果我们使用VM名称指定连接,比如“SQLServerVM”,那么web应用程序可以正常工作,不会出现任何问题。但如果我们指定SQLServerVM的IP地址,我们就会遇到暂时性的问题,比如长时间的服务器应

不确定这是否是StackOverflow问题,但我们在ASP.NET 4 web应用程序中遇到了这个非常奇怪的问题。 因此,有一个到SQL Server的典型连接字符串,其数据源在web.config中指定

SQL Server在虚拟机上运行,与Web虚拟机运行在同一主机上。它们在一个网络中。如果我们使用VM名称指定连接,比如“SQLServerVM”,那么web应用程序可以正常工作,不会出现任何问题。但如果我们指定SQLServerVM的IP地址,我们就会遇到暂时性的问题,比如长时间的服务器应答或超时

尝试从Web服务器VM跟踪IP会显示正确的IP,因此它肯定是同一台机器,并且可以通过名称和IP获得。我们在这个项目中使用ASP.NET Web API 2、ADO.NET、SQL Server 2014 SP3


是否可能使用ADO.NET的连接不能正确使用IP地址,但可以使用SQL Server实例名称?我无法想象出现这种情况的原因,但这显然就是发生的情况。

是否在ip地址中指定sql实例?更重要的是,您是否正在运行针对sql服务的浏览器服务?SQL启动时被分配一个内部IP地址,浏览器服务根据SQL“实例”将该内部IP转换为外部IP。这就是sql server的多个实例可以在同一IP地址上运行的方式。因此,sql浏览器服务就是为您翻译这些内容的工具。如果您的sql server实例不是默认实例,那么IP地址也会导致问题。如果指定IP\SQLINSTANCE,则IP应该可以工作fine@AlbertD.Kallal谢谢你的主意!如我所见,浏览器服务已禁用。您认为,如果不启用它,所描述的问题仍然可能发生,尝试IP\SQLINSTANCE解决方案有意义吗?是的,浏览器服务在大多数情况下是必需的-它将把分配给sql server实例的IP地址(internatl)转换为机器IP地址。在过去,sql server被分配与计算机相同的IP地址-现在不再是这种情况,因此,如果浏览器服务不运行,您通常也无法使用servername\sqlinstance。因此,即使使用了IP或servername,在大多数情况下,您现在也需要运行sql浏览器服务。启动浏览器服务并始终运行。@AlbertD.Kallal我已经检查了我们的另一台服务器,在那里我们没有遇到任何问题。它也没有启用浏览器服务。两台服务器都运行一个SQL Server实例。我已经用
selectserverproperty('InstanceName')
检查了它们,它们都是默认值。考虑到这个问题在一台服务器上是暂时的(即,一些请求可以工作,而另一些则不能),您认为这仍然可能是浏览器服务问题吗?我只是在启用它之前犹豫不决,不想引起任何问题:)这只是需要检查和尝试的一件事。不是100%确定这会是你的问题-因为你大部分时间都可以连接(我假设)。所以这是一个更长远的目标。sql server更高版本的默认实例现在通常需要浏览器服务—请尝试使用SSMS 18.x或更高版本进行连接—您现在可以看到,除非正在运行浏览器服务,否则它不会连接。嘿,可能还有其他一些代码执行错误-这导致你的应用程序池重新循环,会话变量被破坏。我们有太多的问题,我们采用了sql server会话-所有问题都因此消失了(没有应用程序重新循环)。