Sql server 到SQL Server 2017的连接速度慢

Sql server 到SQL Server 2017的连接速度慢,sql-server,Sql Server,在将c应用程序从SQL Server 2008迁移到SQL Server 2017之后,我们意识到连接密集型操作的速度要慢得多 我已经分离出一段代码,它将10000次连接到一个数据库,并在那里执行一个简单的查询。此代码对SQL 2008或SQL 2012运行约5秒,但对SQL 2017运行约25秒 该代码是为.NET 4.52编写的,并在具有不同操作系统的不同机器上进行了测试,包括在SQL Server机器上的本地执行,其中有两台不同的SQL 2017服务器。我已经测试了集成身份验证和SQL S

在将c应用程序从SQL Server 2008迁移到SQL Server 2017之后,我们意识到连接密集型操作的速度要慢得多

我已经分离出一段代码,它将10000次连接到一个数据库,并在那里执行一个简单的查询。此代码对SQL 2008或SQL 2012运行约5秒,但对SQL 2017运行约25秒

该代码是为.NET 4.52编写的,并在具有不同操作系统的不同机器上进行了测试,包括在SQL Server机器上的本地执行,其中有两台不同的SQL 2017服务器。我已经测试了集成身份验证和SQL Server身份验证

要复制的代码:

for (int i = 0; i < 10000; i++)
{
    using (var con = new SqlConnection("server=hostname;Trusted_Connection=True;database=dbname"))
    {
        con.Open();
        var cmd = new SqlCommand("SELECT 1", con);
        // if I ommit this line, the code runs very fast
        cmd.ExecuteScalar();
    }
}
评论更新:

使用SQL Server版本14.0.3223 2017 CU16 尝试了各种主机名:hostname.domain、127.0.0.1、local 试图强制使用特定的SQL Server协议TCP/IP、命名管道和共享内存 重新启动SQL服务后的第一次执行速度更快,以后的执行速度也一样慢 进度的速度不是恒定的-在SQL Server上没有其他负载的情况下,代码有时运行得更快,然后又更慢
有什么想法吗?

检查sql server实例上启用的连接协议以及列表中的优先级排序顺序。是否存在其他变量,如这些实例在网络上的位置、它们承载在什么机器上或这些机器的硬件是什么。在这些机器上执行的其他软件有哪些?如果对sql server实例进行分析,您会观察到什么?响应速度快吗?探查器中的读取次数应接近0,持续时间应接近0?每当我看到类似情况时,我立即开始查看防病毒和防火墙。由于连接实际上不是重新打开的,而是共用的,因此延迟应完全是由于处理发送到服务器的重置连接数据包造成的。根据Jacob的说法,与SQL Server 2017中的实际回归相比,我更倾向于怀疑有什么东西干扰了流量。你是否会得到同样的结果。本地主机,共享内存?那tcp呢:127.0.0.1本地主机,强制tcp?有人在2017实例上创建了服务器级登录触发器或其他非标准的东西吗?当然,你手上有一个谜题。这不是一个可能受到可变硬件负载影响的虚拟机吗?这是我唯一能想到的。剩下的部分需要深入研究,可能需要在SQL Server进程上使用调试器。如果可以清除两台服务器的任何操作负载,则可以尝试比较两台服务器。除此之外,由于缺乏再现性,我认为堆栈溢出不能真正解决这个问题。我认为这是一个与池相关的问题,请尝试阅读这篇文章。