为什么SqlAzureExecutionStrategy无法处理错误:19-物理连接不可用

德克·波尔

完全例外:

System.Data.Entity.Core.EntityCommandExecutionException: An error occurred while executing the command definition. See the inner exception for details. ---> System.Data.SqlClient.SqlException: A transport-level error has occurred when receiving results from the server. (provider: Session Provider, error: 19 - Physical connection is not usable)

为什么不能由SqlAzureExecutionStrategy特别是因为这发生在VIP交换期间。

编写一个自己的东西DbExecutionStrategy来处理这个问题是个好主意,还是我错过了什么?

鲁昂

从探查器跟踪中,我们观察到每个查询数据库查询使用相同的连接。这是设计使然,如前所述,即当开发人员明确打开连接时,它告诉EF不要为每个命令打开/重新打开连接。

好吧,这肯定听起来不像是一般性声明。什么探查器跟踪?为什么假设开发人员明确打开并处理了EF的连接?我在原始问题中看不到任何类似的东西(EF并不常见)。

因此,问题仍未得到解答:SqlAzureExecutionStrategy为什么不处理此问题?编写自己的DbExecutionStrategy来处理这个问题是一个好主意吗?

由于我有时会在我的Azure服务中看到此错误,因此我决定对其进行测试。这是我的策略:

public class ExtendedSqlAzureExecutionStrategy : SqlAzureExecutionStrategy
    {
        public ExtendedSqlAzureExecutionStrategy(int maxRetryCount, TimeSpan maxDelay) : base(maxRetryCount, maxDelay) 
        { }

        protected override bool ShouldRetryOn(Exception exception)
        {
            return base.ShouldRetryOn(exception) || IsPhysicalConnectionNotUsableSqlException(exception);
        }

        private bool IsPhysicalConnectionNotUsableSqlException(Exception ex)
        {
            var sqlException = ex as SqlException;
            if (sqlException != null)
            {
                // Enumerate through all errors found in the exception.
                foreach (SqlError err in sqlException.Errors)
                {
                    if (err.Number == 19)
                    {
                        return true;
                    }                    
                }
            }

            return false;
        }
    }

编辑

好的,经过一段时间并记录日志,我可以说该策略基于

if (err.Number == 19)

错误的此错误实际SQLException对象具有ErrorCode = -2146232060Number = -1-我无法找到那些任何文件,所以我决定不再在其基础上的战略。现在,我正在尝试简单的检查:

public class ExtendedSqlAzureExecutionStrategy : SqlAzureExecutionStrategy
    {
        public ExtendedSqlAzureExecutionStrategy(int maxRetryCount, TimeSpan maxDelay) : base(maxRetryCount, maxDelay) 
        { }

        protected override bool ShouldRetryOn(Exception exception)
        {
            return base.ShouldRetryOn(exception) || IsPhysicalConnectionNotUsableSqlException(exception);
        }

        private bool IsPhysicalConnectionNotUsableSqlException(Exception ex)
        {
            var sqlException = ex as SqlException;
            if (sqlException != null)
            {
                return sqlException.Message.Contains("Physical connection is not usable");
            }

            return false;
        }
    }

编辑2:

有用。Physical connection is not usable根本没有更多错误,也没有RetryLimitExceededException,因此该错误实际上是暂时性的(可通过重试解决),因此我认为应将其包含在中SqlAzureExecutionStrategy

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法摆脱“物理连接不可用”异常

来自分类Dev

Azure数据库中的OWIN访问出现“错误:19-物理连接不可用”

来自分类Dev

Azure数据库中的OWIN访问出现“错误:19-物理连接不可用”

来自分类Dev

hmailserver错误-与数据库的连接不可用

来自分类Dev

为什么在Bochs上分页不起作用并且获取物理地址不可用错误

来自分类Dev

处理不可用的路线

来自分类Dev

错误网页不可用

来自分类Dev

IIS FTP无法连接,421服务不可用错误

来自分类Dev

sybase_connect() 错误 - “无法连接:Adaptive Server 不可用或不存在”

来自分类Dev

为什么变量不可用?

来自分类Dev

代号一:加载图片时处理服务器/连接不可用

来自分类Dev

工作站9错误:连接激活失败:设备不受NetworkManager管理或不可用

来自分类Dev

蓝牙耳机提供错误连接失败:blueman.bluez.errors.dbusfailederror:协议不可用

来自分类Dev

SSLError:无法连接到HTTPS URL,因为SSL模块在Google App Engine上不可用

来自分类Dev

gRPC:14不可用:无法连接到所有地址

来自分类Dev

Python“ SSLError(”由于SSL模块不可用而无法连接到HTTPS URL。“)':/ simple / docutils /”

来自分类Dev

处理不可用的页面(statusCode)

来自分类Dev

错误:请求的“ ranchu”不可用

来自分类Dev

MKDirectionsResponse:错误,方向不可用。(美国)

来自分类Dev

Xcode 6错误“ URLWithString”不可用?

来自分类Dev

估计iBeacon错误:服务不可用

来自分类Dev

MKDirectionsResponse:错误,方向不可用。(美国)

来自分类Dev

AngularJS错误:ngAnimate模块不可用

来自分类Dev

估计iBeacon错误:服务不可用

来自分类Dev

错误:[$ injector:nomod]模块不可用

来自分类Dev

请求的资源不可用错误

来自分类Dev

nHibernate SQL不可用错误

来自分类Dev

获取错误“AVCapturePhotoOutput”不可用

来自分类Dev

资源暂时不可用:mod_wsgi(pid = 28433):无法连接到WSGI守护进程

Related 相关文章

  1. 1

    无法摆脱“物理连接不可用”异常

  2. 2

    Azure数据库中的OWIN访问出现“错误:19-物理连接不可用”

  3. 3

    Azure数据库中的OWIN访问出现“错误:19-物理连接不可用”

  4. 4

    hmailserver错误-与数据库的连接不可用

  5. 5

    为什么在Bochs上分页不起作用并且获取物理地址不可用错误

  6. 6

    处理不可用的路线

  7. 7

    错误网页不可用

  8. 8

    IIS FTP无法连接,421服务不可用错误

  9. 9

    sybase_connect() 错误 - “无法连接:Adaptive Server 不可用或不存在”

  10. 10

    为什么变量不可用?

  11. 11

    代号一:加载图片时处理服务器/连接不可用

  12. 12

    工作站9错误:连接激活失败:设备不受NetworkManager管理或不可用

  13. 13

    蓝牙耳机提供错误连接失败:blueman.bluez.errors.dbusfailederror:协议不可用

  14. 14

    SSLError:无法连接到HTTPS URL,因为SSL模块在Google App Engine上不可用

  15. 15

    gRPC:14不可用:无法连接到所有地址

  16. 16

    Python“ SSLError(”由于SSL模块不可用而无法连接到HTTPS URL。“)':/ simple / docutils /”

  17. 17

    处理不可用的页面(statusCode)

  18. 18

    错误:请求的“ ranchu”不可用

  19. 19

    MKDirectionsResponse:错误,方向不可用。(美国)

  20. 20

    Xcode 6错误“ URLWithString”不可用?

  21. 21

    估计iBeacon错误:服务不可用

  22. 22

    MKDirectionsResponse:错误,方向不可用。(美国)

  23. 23

    AngularJS错误:ngAnimate模块不可用

  24. 24

    估计iBeacon错误:服务不可用

  25. 25

    错误:[$ injector:nomod]模块不可用

  26. 26

    请求的资源不可用错误

  27. 27

    nHibernate SQL不可用错误

  28. 28

    获取错误“AVCapturePhotoOutput”不可用

  29. 29

    资源暂时不可用:mod_wsgi(pid = 28433):无法连接到WSGI守护进程

热门标签

归档