我正在运行一个将连接azure SQL数据库的应用程序。我遇到了一个问题,即应用程序将在多个线程中连接到数据库,从而导致竞争条件。我想按顺序运行它们。
我无法更改应用程序,有没有办法将数据库设置为只允许单个连接,如果它不允许,则等待连接?
单用户模式在Azure SQL数据库上不可用。
但是,也许您应该考虑在应用程序上添加重试逻辑,以便它可以重试X次,并且在重试失败后可以增加重试间隔。
public void HandleTransients()
{
var connStr = "some database";
var _policy = RetryPolicy.Create < SqlAzureTransientErrorDetectionStrategy(
retryCount: 3,
retryInterval: TimeSpan.FromSeconds(5));
using (var conn = new ReliableSqlConnection(connStr, _policy))
{
// Do SQL stuff here.
}
}