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两个方法之前试过延长启动过程的时长,在网上找了几种方式都没有效果,也许是没有设置对吧。




免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM