从 C# 连接到 SQL Server 2000 的问题



我正在使用Winforms C#,.Net Framework 4.0应用程序,并且我正在尝试使用Data.SqlClient连接到SQL Server 2000。数据库和应用在同一台服务器计算机上运行。

之前,我在其他 2 台服务器上成功运行了应用程序。

我在配置中的连接字符串是:

ConnectionString="Data Source=xyz;Initial Catalog=xyz;Integrated Security=True;"

但是第 3 台服务器会导致错误:

连接超时已过期。登录后阶段经过的超时期限。在等待服务器完成登录过程并响应时,连接可能已超时;或者,它可能在尝试创建多个活动连接时超时。尝试连接到此服务器所花费的持续时间为 - [登录前] 初始化=3998;握手=0;[登录] 初始化=0;身份验证 = 0;[登录后] 完成 = 10000;">

然后,我将连接字符串更改为

ConnectionString="Data Source=xyz;Initial Catalog=xyz;Integrated Security=True;Connection Timeout=30;"

我收到一个新错误

SSPI 握手期间发生传输级错误。(提供程序:命名管道提供程序,错误:0 - 管道已结束。

更新:我尝试使用 udl 文件创建连接字符串并将其放入配置文件中,但仍然存在错误

那么我在这里错过了什么?

提前谢谢。

更新:我修复了用 OLEDB 库替换 sqlclient 时此问题

ConnectionString="Data Source=xyz;初始目录=xyz;集成安全性=真;">

这可能是正确的,尝试在打开后关闭连接

我认为你没有错过任何东西。您的连接字符串对我来说看起来不错。

连接字符串="数据源=xyz;初始目录=xyz;集成安全性 = 真;

可能是由于使用命名管道而不是共享内存放置连接的任何原因。共享内存是本地 SQL 连接的默认选项,因此 SqlClient 无法识别连接是本地连接,而是通过 TCP 上的命名管道放置。结果是连接被拒绝或未连接。

我不确定,但请检查您的服务器名称,它应该是限定域名或IP地址。如果通过主机名或"."或"(本地)"指定它,则 SqlClient 应识别本地连接,并且不应看到错误。

我刚刚经历了这个问题,我在任何地方发现都没有帮助,所以我想我会分享对我有帮助的解决方案。

事实证明,我的客户使用"username@domain.com"作为他们的登录名,而不仅仅是"用户名"。看起来 excel 内部有一些功能尝试通过该域对用户进行身份验证,因此,连接超时而没有响应。不要在 SQL Server 中使用"@domain.com"创建登录名。

希望这对将来的某人有所帮助。

最新更新