SqlConnection connection = new SqlConnection(sqlconnection); connection.Open();
项目为 。NEt core mvc 项目
上面代码用来连接sql server 数据库并打开。在windows 上运行一切正常。
将代码发布到centos 上运行的时候。在 open() 的时候 超时了。有没有哪位高手测试过在linux下面的数据库连接操作。
数据库放在外网的一台window 服务器上面,是否是在centos 系统里面还要做什么配置才可以连接? 在liunx 系统ping 数据库服务器是可以正常ping通的。
在centos上telnet 数据库服务器IP 1433
能连上吗?
好像是可以连接。我尝试用泳SqlConnection和 EF 进行连接,在windows 平台下面都可以正常连接,但是在centos 下面都无法进行连接。
@yzy: 连接时报什么错?
@dudu: EF错误提示:
"Connection Timeout Expired. The timeout period elapsed during the post-login phase. The connection could have timed out while waiting for server to complete the login process and respond; Or it could have timed out while attempting to create multiple active connections. The duration spent while attempting to connect to this server was - [Pre-Login] initialization=799; handshake=1314; [Login] initialization=4; authentication=33; [Post-Login] complete=12210; "
SqlConnection代码:
SqlConnection conn=new SqlConnection("Data Source=x.x.x.x;Initial Catalog=db;User ID=sa;Password=xxx;");
conn.Open();--此处报错
conn.Close();
SqlConnection 错误提示:
Connection Timeout Expired. The timeout period elapsed during the post-login phase. The connection could have timed out while waiting for server to complete the login process and respond; Or it could have timed out while attempting to create multiple active connections. The duration spent while attempting to connect to this server was - [Pre-Login] initialization=906; handshake=1766; [Login] initialization=5; authentication=101; [Post-Login] complete=12080; "
@yzy: 在centos上用telent实际测试过了吗?
@dudu: 是否是跟sql server 版本有关系,我sql server 是 2008 R2版本。还有请问 telnet 之后什么提示标识可以连接。
@dudu: 我使用了telnet进程操作,如下提示。
[root@localhost /]# telnet x.x.x.x 1433
Trying x.x.x.x...
Connected to x.x.x.x.
Escape character is '^]'.
这个提示表示是可以连接还是不可以连接?
@yzy:这个表示连接成功了
@yzy: 把连接字符串中的连接超时时间设置长一些试试
@dudu: 超时时间我设置很长也是一样,我之前尝试设置过了。是否是在linux 平台上我还需要而外的引用其他dll才可以。你有在linux 平台上成功连接上sql server 数据库过吗?
@yzy: http://about.cnblogs.com/ 就是用ASP.NET Core跑在Linux上,数据库用的就是SQL Server
@dudu: 请问下你是使用的什么方式进行的数据库连接操作。你这边sql server 的版本时什么版本
@yzy: EF + 阿里云RDS(SQL Server 2008)
已经解决了,应该是数据库版本的问题。我尝试了使用sql server 2014 就正常了。应该是我这边sql server 2008的版本不是他所要求的最低版本号,或者是没有打上最新的更新包。如果有人需要连接超时,可以考虑尝试更换下数据库。
也要 感谢下dudu
遇到同样的问题,也是将代码发布到centos 上运行的时候连接数据库超时,更换了sql server 2014仍然超时。
请问如何还有什么办法定位问题出在哪里吗?
如果使用2008的话,必须升级到SQL Server 2008 sp4 才可以的
我用的也是 sqlserver 2008 r2 补丁打了 sp3的就好了。
https://download.microsoft.com/download/9/6/4/964BB4EC-FC28-4DA7-9295-7D4A8FDBE1A4/CHS/SQLServer2008R2SP3-KB2979597-x64-CHS.exe