gpt4 book ai didi

.net - transient 故障处理应用程序 block 是否处理当前连接到联合数据库的连接?

转载 作者:行者123 更新时间:2023-12-02 07:32:19 25 4
gpt4 key购买 nike

在 Windows Azure 中,我们使用 transient 故障处理应用程序 block 来重试逻辑,该逻辑在我们的辅助角色上按预期工作。不过,我们最近将 SQL Azure 数据库升级为联合数据库,但此后遇到了一些问题。

我们的辅助角色偶尔会说某个特定的存储过程不存在。这是我们在运行循环中每秒检查一次的存储过程。该角色循环遍历每个分片并在每个分片数据库上运行存储过程。这一切都工作正常,但是偶尔我们会在日志中收到错误,指出它无法找到带有指示 TransientFaultHandling 连接已重试的调用堆栈的存储过程。

由于我们的代码只是创建一个连接(保持打开状态)连接到一个分片,然后执行存储过程,我认为候选者可能是,如果存在 transient 故障并且重试连接,它可能最终会连接返回到根数据库而不是它曾经连接的分片?

我的问题是 TransientFaultHandling block 是否正确地考虑了这一点,并在重试连接时重新连接回正确的分片,如果没有,是否有这样做的最佳实践?

谢谢加雷斯

最佳答案

我怀疑你走在正确的道路上;连接可能已重置到根数据库。据我所知, transient 故障处理 block 将自动处理 transient 错误,但不支持联合。

我想知道你的代码是如何构造的。但这里有一个想法(如果这不是您已经在做的事情):您可以使用应用程序 block 重试整段代码,其中包括连接请求、USE 命令(用于联合)和存储过程调用。所以如果失败了,一切都得重试。为此,您可以创建一个重试策略对象(这将是 SQL 数据库 transient 检测策略),然后调用执行您想要完成的所有工作的 ExecuteAction 方法。

希望这有帮助。

埃尔维

关于.net - transient 故障处理应用程序 block 是否处理当前连接到联合数据库的连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12238403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com