0

我的想法已经用完了,所以检查是否有人可以阐明。

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

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

使用我从 JohnnyCoder 的Database Connectivity Test with UDL File中学到的技巧,我发现问题出在驱动程序的某个地方。当我尝试 Microsoft OLE DB Provider for SQL Server 时,它会立即连接。当我尝试 SQL Native Client 时,它不需要很长时间。即使我将连接超时设置为 60,它也会失败。

这两个应用程序都可以在其他安装上运行良好,但在一个特定站点上却不行。所以它必须与一些环境设置有关,例如安全、防火墙等。

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

所以我的问题是:

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

1 回答 1

2

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

于 2013-04-03T14:24:54.010 回答