我对缓慢的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。