在连接字符串中使用IP时,SQL查询速度非常慢



我对缓慢的SQL查询感到非常头疼。我有两个连接字符串,如下所示:

ConnectString1 = "Driver={SQL Server};Server=MSSQLSERVER5;Database=SchoolMain;Uid=Admin;Pwd=admin101;"

ConnectString2 = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=Admin;Password=admin101;Initial Catalog=SchoolMain;Data Source=192.168.1.2,1433"

两者都连接到同一系统上的SQL Server数据库实例。第一个使用数据库实例名称进行连接,而第二个使用IP地址(通过互联网连接到系统(和端口号进行连接。

使用ConnectString1的查询是第一个,执行时间不到2秒,而使用ConnectString2的查询速度非常慢,大多数情况下都会出现超时错误。

我在互联网上到处搜索,仍然找不到问题所在。我读到关于关闭LLMNR协议并在主机文件中添加条目以解决反向DNS的文章,按照步骤进行了操作,但它仍然与ConnectString2的查询一样,仍然非常慢。

尽管当我将ConnectString2中的IP地址从192.168.1.2更改为127.0.0.1时,查询的工作速度非常快,与ConnectString1完全一样。

有没有办法将所有IP地址路由到机器上的127.0.0.1?

我需要ConnectString2来工作,查询将从局域网外的其他系统推送到IP地址。

注意:我使用的是SQL Server 2008

请帮忙。

发生这种情况的主要原因是反向DNS,这意味着sql需要将IP转换为物理地址,这需要时间。

若要解决此问题,请使用主机文件将地址添加到计算机,然后使用主机文件中给定的名称而不是IP。

如果您不想对主机文件进行调整,请尝试查看备用解决方案以启用默认情况下禁用的TCP/IP。

最新更新