【发布时间】:2013-03-28 19:08:49
【问题描述】:
我的想法已经不多了,所以请检查是否有人可以提供一些启示。
- 2 层客户端-服务器应用程序
- SQL Server 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。没有运气。
所以我的问题是:
- 当客户端实际上无法连接时,为什么应用程序 2 会使其工作?当 SQL Native Client 超时发生时,是否有使用 OLE DB 的内部逻辑?
- 您还想看什么?
【问题讨论】:
-
在此处检查您的连接字符串:connectionstrings.com/…。验证它是否正确,或进行必要的更改以使其正确,然后再次尝试连接。将您正在使用的连接字符串添加到您的问题中。让我们知道结果。
-
感谢您的回复。我的完整 OLE DB 提供程序连接字符串如下所示:“Provider=SQLOLEDB.1;Persist Security Info=False;User ID=username;Password=password;Initial Catalog=database;Data Source=server\instance” 我完整的 SqlConnection 字符串是除了 Provider 属性外完全相同,因此“Persist Security Info=False;User ID=username;Password=password;Initial Catalog=database;Data Source=server\instance”。希望这能澄清您想知道的内容。
-
在代码中具体如何使用:
var conn = new System.Data.SqlClient.SqlConnection(ConnectionString);