连接到 SQL Server 时突然出现"Login timeout expired"错误



其他人问了这个问题,但是我没有找到一个答案,该答案专门解决了我所遇到的问题,也没有解决这个问题。所以我要发布问题和答案。

几天前,我有几个连接到SQL Server并导出一些数据的自动脚本,突然停止工作。他们的运行良好已有7年了,所以这很奇怪。两个脚本都使用不同的方法来连接。一个使用perl库,另一个使用 bcp命令。但是两者都有相同的错误。我将仅显示bcp命令。这一切都是在Windows Server 2008上运行的,其中SQL Server 2008 R2,v10.50。这就是我正在运行的:

"C:Program FilesMicrosoft SQL Server100ToolsBinnbcp.exe" "<my query>" queryout "<output file name>" -T -S MYSERVER -c -k

这是我遇到的错误:

sqlstate = 08001,本机eRROR = 10061
错误= [Microsoft] [SQL Server本地客户端10.0] TCP提供商:由于目标机积极拒绝,因此无法建立连接。

sqlstate = 08001,本机eRROR = 10061
错误= [Microsoft] [SQL Server本地客户端10.0]在建立与SQL Server的连接时,发生了与网络相关或实例特定的错误。服务器未找到或无法访问。检查实例名称是否正确,以及是否配置了SQL Server以允许远程连接。有关更多信息,请参见SQL Server Books在线。

sqlstate = s1t00,本机eRROR = 0
错误= [Microsoft] [SQL Server本地客户端10.0]登录超时过期

解决方案非常简单。我刚刚将端口号添加到服务器名称(将MYSERVER更改为MYSERVER,1433)。因此,我的最终bcp命令看起来像:

"C:Program FilesMicrosoft SQL Server100ToolsBinnbcp.exe" "<my query>" queryout "<output file name>" -T -S MYSERVER,1433 -c -k

我不确定包括端口在内的需要发生的变化。但这就是全部。

这不仅仅是默认端口,这很奇怪。您可能会认为bcp将不需要明确设置它。不过,这可能只是一些怪异的服务器配置,突然需要端口。

最新更新