#azure #azure-sql-database
Вопрос:
Я запускаю приложение, которое будет подключать базу данных SQL azure. Я столкнулся с проблемой, из-за которой приложение будет подключаться к базе данных в нескольких потоках, что приведет к возникновению условий гонки. Я хочу запустить их последовательно.
Я не могу изменить приложение, есть ли способ настроить базу данных так, чтобы она разрешала только одно соединение, если оно не будет затем ждать, пока оно подключится?
Комментарии:
1. AFAIK вы не можете заставить Azure SQL ограничиваться только одним подключением. Для предварительных версий SQL вы можете перевести базу данных в
single user
режим, чтобы к ней мог подключиться только один пользователь, но это не то, что вы хотите.2. Основываясь на используемой вами базе данных, вы можете попытаться ограничить максимальное количество одновременных подключений очень низким значением. Какое именно предложение БД вы используете?
Ответ №1:
Однопользовательский режим недоступен в базе данных SQL Azure.
Однако, возможно, вам следует рассмотреть возможность добавления логики повторных попыток в приложение, чтобы оно могло повторить попытку X раз, а интервал между повторными попытками можно было увеличить после неудачной попытки.
public void HandleTransients() { var connStr = "some database"; var _policy = RetryPolicy.Create lt; SqlAzureTransientErrorDetectionStrategy( retryCount: 3, retryInterval: TimeSpan.FromSeconds(5)); using (var conn = new ReliableSqlConnection(connStr, _policy)) { // Do SQL stuff here. } }