在具有 SQL Server 故障转移群集或镜像的环境中,您更喜欢如何处理错误?似乎有两种选择:
- 使整个当前客户端请求失败,并让用户重试
- 捕获 DAL 中的错误,然后在那里重试
每种方法都有其优点和缺点。我合作过的大多数商店都做#1,但他们中的许多也没有遵循严格的交易界限,而且在我看来,如果发生故障,他们就会为麻烦而敞开心扉。即便如此,我在将它们与#2 交谈时遇到了麻烦,这也应该会带来更好的用户体验(一个问题是发生故障转移时可能会出现长时间的延迟)。
任何一种或另一种方式的论点都会受到赞赏。如果您使用第二种方法,您是否有一个有助于简化实现的标准包装器?无论哪种方式,您如何构建您的代码以避免诸如与失败命令中缺乏幂等性相关的问题?