sql server+EF 部署重启IIS时报错:SqlClient.SqlException (0x80131904): 执行超时已过期。完成操作之前已超时或服务器未响应。 ---> System.ComponentModel.Win32Exception (0x80004005): 等待的操作过时。

经过同事排查发现问题源由

1)新增字段,并且该字段是非空。

2)新增字段的表数据量比较多,3千多万条数据。

3)对象新增的属性加了virtual 导致数据迁移超时,public virtual 类型 属性名(而且这个类型是一个class类)。

非空字段EF新增过程必须对整个表添加一个默认值,由于表的数据比较多导致启动过程超时。

解决办法:

1)将字段类型加个?,表示字段为可空字段。

2)取消EF的数据自动迁移功能,手动加上新字段,再重启即可。

3)先将字段设置为可空,部署完成之后再通过Sql语句把不可空字段加上默认值,然后把字段设置为不可空再重新部署。

第3种方法只是我的一个想法不还有待验证。

在使用以上1和2两个方法之前试过延长启动过程的时长,在网上找了几种方式都没有效果,也许是没有设置对吧。



posted on 2019-12-24 19:59  醉驾的猫  阅读(2694)  评论(0编辑  收藏  举报

导航