如何使用Azure数据库模拟瞬态错误?

时间:2013-03-10 15:42:22

标签: azure error-handling azure-sql-database throttling

我正在使用瞬态故障处理应用程序块(TFHAB)在与Azure数据库连接时定义重试策略。我想知道是否有办法调用限制响应来规划和处理可能的生产场景?

我可以在一个循环中放置一个SQL命令并运行它直到我调用一个响应但是大概这不被认为是“最佳实践”?

有人能提出一些实用的方法来测试我的瞬态错误处理逻辑吗?

3 个答案:

答案 0 :(得分:2)

结合Testing Transient errors in Azureerror codes returned by Windows Azure SQL Database的列表,看看你是否可以模拟你正在测试的行为。除了单元测试之外我不认为你能够“模拟”错误,因为这些错误来自SQL,通过TDS协议,很难拦截。您的需求将成为应用程序块的一个分支的良好候选者,您可以在其中注入模拟器。

答案 1 :(得分:2)

我设法开发了一些代码,可以让您在Azure SQL数据库中可靠地生成瞬态错误。您可以在https://github.com/robdmoore/SQLAzureTransientDemo

找到代码

答案 2 :(得分:0)

我向你推荐的是依赖注入:)为了精心设计,你的更高级别的客户端代码不应该直接依赖于azure,将客户端SDK放在接口之后,并将该接口作为依赖关系传递给更高级别的客户端代码。将生产代码的实际sdk作为接口实现传递,并为测试传递接口的测试实现,您可以在其中返回所需的任何错误代码或响应。