使用SQL Server的朋友可能知道當(dāng)我們連接到 SQL Server 7.0 或 SQL Server 2000 數(shù)據(jù)庫時所花的時間可能比預(yù)期的要長。在某些報告的情況中,其表現(xiàn)為向客戶端應(yīng)用程序報告“超時已過期”錯誤,而且連接嘗試失敗。 本文主要給大家介紹該錯誤現(xiàn)象和原因及解決方案。
錯誤現(xiàn)象:
當(dāng)安裝 Microsoft 數(shù)據(jù)訪問組件 (MDAC) 版本 2.6 后,每次嘗試使用 IP 地址(而不是服務(wù)器名稱)連接到 SQL Server 7.0 或 SQL Server 2000 數(shù)據(jù)庫時所花的時間可能比預(yù)期的要長。在某些報告的情況中,其表現(xiàn)為向客戶端應(yīng)用程序報告“超時已過期”錯誤,而且連接嘗試失敗。
請注意,如果您使用的是映射到 TCP/IP 地址的服務(wù)器別名,則可能會出現(xiàn)此錯誤。
如果安裝了 MDAC 2.5 或 2.1,則不會出現(xiàn)此問題。
原因:
SQL Server 網(wǎng)絡(luò)庫的 Dbnetlib.dll 的 MDAC 2.6 版本嘗試使用反向搜索來確定 IP 地址的主機名。如果客戶端計算機具有較慢的域名服務(wù) (DNS) 服務(wù)器或者沒有 DNS 服務(wù)器,并且計算機上的本地 HOSTS 或 LMHOSTS 文件不包含 SQL Server 的 IP 地址的主機名,則反向搜索將在五秒鐘后超時。
請注意,這只是 SQL Server 驅(qū)動程序代碼內(nèi)部的超時,它可能會在客戶端應(yīng)用程序中生成超時錯誤,也可能不會。連接嘗試可能會成功,但應(yīng)用程序所建立的每一個新連接將出現(xiàn)相同的五秒鐘延遲。
解決方案:
若要解決此問題,請獲取最新的 Microsoft SQL Server 2000 Service Pack。有關(guān)其他信息,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應(yīng)的文章:
如何獲取最新的 SQL Server 2000 Service Pack :(http://support.microsoft.com/kb/290211/):
要解決此問題,請獲取最新的 Microsoft Data Access Components 2.6 Service Pack。有關(guān)其他信息,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應(yīng)的文章:
如何獲取最新的 MDAC 2.6 Service Pack (http://support.microsoft.com/kb/300635/)
修復(fù)程序:
注意:以下修復(fù)程序是在 SQL Server 2000 Service Pack 2 之前創(chuàng)建的。
該修復(fù)程序的英文版應(yīng)具有以下或更新的文件屬性:
日期 版本 大小 文件名
平臺 -----19-JUN-2001
2000.080.0304.00 86,082 Dbnetlib.dll x86
替代方法:
若要解決此問題,請?zhí)峁┮恍┛煽康姆椒▉韴?zhí)行 SQL Server 服務(wù)器 IP 地址的反向搜索,使用 SQL Server 計算機名(而不是 IP 地址),或者應(yīng)用此修復(fù)程序。
若要使用 HOSTS 文件或 LMHOSTS,請將 SQL Server 服務(wù)器的 TCP/IP 地址放在行的開頭,后面接幾個空格,然后是 SQL Server 服務(wù)器的計算機名。例如:123.123.123.123 myservername
對于運行 Microsoft Windows NT 和 Microsoft Windows 2000 的客戶機,HOSTS 或 LMHOSTS 文件位于 System32DriversEtc 目錄;對于運行 Microsoft Windows ME、Microsoft Windows 98 或 Microsoft Windows 95 的客戶機,HOSTS 或 LMHOSTS 文件位于 Windows 目錄。