首页新闻找找看学习计划

关于。Net Core SqlConnection 在Centos连接超时问题。

0
[待解决问题]
   SqlConnection connection = new SqlConnection(sqlconnection);
           
            connection.Open();

项目为  。NEt  core mvc 项目

上面代码用来连接sql server 数据库并打开。在windows 上运行一切正常。

将代码发布到centos 上运行的时候。在 open() 的时候 超时了。有没有哪位高手测试过在linux下面的数据库连接操作。

数据库放在外网的一台window 服务器上面,是否是在centos 系统里面还要做什么配置才可以连接? 在liunx 系统ping 数据库服务器是可以正常ping通的。

yzy的主页 yzy | 菜鸟二级 | 园豆:311
提问于:2016-08-27 18:22
< >
分享
所有回答(4)
0

在centos上telnet 数据库服务器IP 1433能连上吗?

dudu | 园豆:39106 (高人七级) | 2016-08-27 18:26

好像是可以连接。我尝试用泳SqlConnection和 EF 进行连接,在windows 平台下面都可以正常连接,但是在centos 下面都无法进行连接。

支持(0) 反对(0) yzy | 园豆:311 (菜鸟二级) | 2016-08-29 13:44

@yzy: 连接时报什么错?

支持(0) 反对(0) dudu | 园豆:39106 (高人七级) | 2016-08-30 14:19

@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; "

支持(0) 反对(0) yzy | 园豆:311 (菜鸟二级) | 2016-08-30 14:35

@yzy: 在centos上用telent实际测试过了吗?

支持(0) 反对(0) dudu | 园豆:39106 (高人七级) | 2016-08-30 14:40

@dudu: 是否是跟sql server  版本有关系,我sql server  是 2008 R2版本。还有请问 telnet 之后什么提示标识可以连接。

支持(0) 反对(0) yzy | 园豆:311 (菜鸟二级) | 2016-08-30 14:48

@dudu: 我使用了telnet进程操作,如下提示。

[root@localhost /]# telnet x.x.x.x 1433
Trying x.x.x.x...
Connected to x.x.x.x.
Escape character is '^]'.

这个提示表示是可以连接还是不可以连接?

支持(0) 反对(0) yzy | 园豆:311 (菜鸟二级) | 2016-08-30 14:58

@yzy:这个表示连接成功了

支持(0) 反对(0) dudu | 园豆:39106 (高人七级) | 2016-08-30 15:00

@yzy: 把连接字符串中的连接超时时间设置长一些试试

支持(0) 反对(0) dudu | 园豆:39106 (高人七级) | 2016-08-30 15:06

@dudu: 超时时间我设置很长也是一样,我之前尝试设置过了。是否是在linux 平台上我还需要而外的引用其他dll才可以。你有在linux 平台上成功连接上sql server 数据库过吗?

支持(0) 反对(0) yzy | 园豆:311 (菜鸟二级) | 2016-08-30 15:20

@yzy: http://about.cnblogs.com/ 就是用ASP.NET Core跑在Linux上,数据库用的就是SQL Server

支持(0) 反对(0) dudu | 园豆:39106 (高人七级) | 2016-08-30 15:23

@dudu: 请问下你是使用的什么方式进行的数据库连接操作。你这边sql server 的版本时什么版本

支持(0) 反对(0) yzy | 园豆:311 (菜鸟二级) | 2016-08-30 15:25

@yzy: EF + 阿里云RDS(SQL Server 2008)

支持(0) 反对(0) dudu | 园豆:39106 (高人七级) | 2016-08-30 16:16
1

已经解决了,应该是数据库版本的问题。我尝试了使用sql server 2014 就正常了。应该是我这边sql server 2008的版本不是他所要求的最低版本号,或者是没有打上最新的更新包。如果有人需要连接超时,可以考虑尝试更换下数据库。

也要 感谢下dudu 

yzy | 园豆:311 (菜鸟二级) | 2016-08-31 09:15

遇到同样的问题,也是将代码发布到centos 上运行的时候连接数据库超时,更换了sql server 2014仍然超时。

请问如何还有什么办法定位问题出在哪里吗?

支持(0) 反对(0) zhangms | 园豆:200 (初学一级) | 2017-07-13 21:49
0

如果使用2008的话,必须升级到SQL Server 2008 sp4 才可以的

fqybzhangji | 园豆:284 (菜鸟二级) | 2017-05-16 12:08
0

我用的也是 sqlserver 2008 r2  补丁打了 sp3的就好了。
https://download.microsoft.com/download/9/6/4/964BB4EC-FC28-4DA7-9295-7D4A8FDBE1A4/CHS/SQLServer2008R2SP3-KB2979597-x64-CHS.exe

玖億貓 | 园豆:202 (菜鸟二级) | 2017-09-14 14:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册