适用于SQL Server的OLE DB提供程序可以工作,但不适用于SQL本机客户端



我已经没有什么想法了,所以请检查是否有人能提供一些线索。

  • 2层客户端服务器应用程序
  • SQL Server 2005
  • 工作站:Windows XP
  • 客户端服务器应用程序1使用SQL OLE DB提供程序。(提供程序=SQLOLEDB.1(
  • 客户端服务器应用程序2使用SQL本机客户端。(System.Data.SqlClient.SqlConnection(

不知何故,应用程序1运行良好,但应用程序2需要将连接超时设置为30秒才能运行。

使用我从JohnnyCode的UDL文件数据库连接测试中学到的技巧,我找到了驱动程序周围的问题。当我尝试Microsoft OLE DB Provider for SQL Server时,它会立即连接当我尝试SQL Native Client时,它不会花很长时间。即使我将连接超时设置为60,它也会失败

这两个应用程序在其他安装上都能很好地工作,但在一个特定的站点上却不能。因此,它必须与一些环境设置有关,如安全、防火墙等。

我尝试在工作站上安装新的SQL Server 2005 Native Client。运气不好。

所以我的问题是:

  1. 当客户端实际上无法连接时,为什么应用程序2会让它工作?当SQL Native Client超时时,是否有使用OLE DB的内部逻辑
  2. 你还会看什么

答案:他们的网络防火墙阻止了TCP/IP数据包。结果,SQL Native Client在20秒后使用TCP/IP超时,然后尝试了Named Pipe,使其正常工作。

最新更新