问题从C#连接到SQL Server 2000

时间:2018-01-03 03:27:15

标签: c# sql sql-server-2000

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

之前,我成功地在其他2台服务器上运行了app。

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

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

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

  

连接超时已过期。在登录后阶段过去了超时时间。在等待服务器完成登录过程并响应时,连接可能已超时;或者在尝试创建多个活动连接时可能会超时。尝试连接到此服务器所花费的时间是 - [Pre-Login] initialization = 3998;握手= 0; [登录]初始化= 0;认证= 0; [登录后]完成= 10000; "

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

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

我收到了新错误

  

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

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

那我在这里错过了什么?

提前致谢。

更新:我在用OLEDB lib替换sqlclient时解决了这个问题

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

我认为你没有遗漏任何东西。您的连接字符串对我来说很好。

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

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

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

答案 2 :(得分:0)

我刚刚经历了这个问题,在任何地方都找不到任何帮助,因此我想分享可以帮助我的解决方案。

原来,我的客户使用“ username@domain.com”作为登录名,而不仅仅是“ username”。似乎excel中有一些内部功能试图通过该域对用户进行身份验证,因此连接超时而没有响应。不要在SQL Server中使用“ @ domain.com”创建登录名。

希望这对以后的人有帮助。

相关问题