np:
可以强制使用命名管道而不是默认的TCP协议。这样连接字符串变成了Server=np:server\instance
。使用IP地址(而不是主机名)建立与SQL Server的集成安全连接,将防止使用Kerberos身份验证。在这种情况下,请检查SQL Server和域控制器之间的连接。
如果使用主机名(而不是IP地址)进行连接,则会启用Kerbos,在这种情况下,您需要检查客户端计算机与域控制器之间的连接。
我们曾经遇到过同样的问题,后来发现是由于我们远程托管的Active Directory服务器出了问题。
我们创建了一个站点本地的Active Directory服务器来复制远程托管的AD主服务器,然后我们所有缓慢的SQL Server集成安全认证性能问题都得到了解决。
希望这可以帮到你。
是的,当您使用集成安全性时,可能会归咎于Active Directory,也可能是整个网络,因为它完全取决于它。我能想到的另一件事是您正在使用的SQL Server版本。
此外,当SQL Server长时间未被使用时,它的行为类似于IIS,将工作进程置于睡眠状态,因此当您再次联系服务器时,根据机器(我们可以看到这些具有桌面机器配置),需要一些时间才能使工作进程恢复生机并准备好工作。
我曾经遇到过同样的问题。在Google和Stackoverflow上进行了大量的研究后,我更改了客户端计算机的hosts文件(在Windows中位于C:\ Windows \ System32 \ drivers \ etc)。我在此文件中输入了我的主机IP地址和服务器名称,然后就万事大吉了! 就像Stackoverflow上的每个人所说的那样,是计算机在DNS服务中查找服务器名称的地址并超时了。 以下是我所做的步骤。如果其他方法都不起作用,请尝试一下。
如何在hosts文件中添加条目
1.打开命令提示符并ping您的服务器,这是远程数据库所在的位置。要做到这一点,请输入以下命令:
ping servername
这里我的远程计算机名称是Juno。所以我应该这样ping。
ping Juno
这个命令将会ping我的服务器并返回像这样的IP地址。
Pinging Juno [192.168.0.3] with 32 bytes of data:
如您所见,服务器的IP地址位于括号之间。复制IP地址。
2.现在使用以管理员身份运行的记事本打开Hosts文件。
在hosts文件的末尾,会有一些类似于这样的行:
#localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
# 169.254.63.1 Juno
就是这样!
这可能是连接或认证方面的问题,通常第一次连接需要更长时间,因为ADO.NET具有连接池来避免长时间的连接。
有许多因素会影响速度: - TCP/IP配置 - 服务器端路由器 - 等等。
我没有一个确切的答案,但你尝试过使用SQL Profiler运行来查看SQL的视角吗?
另外,你尝试使用与你连接相同的凭据连接到SQL吗?
另一方面,这可能是更低级别的问题,但我总是先检查易于检查的东西。
祝好运。