Запланированные задачи с Sql Azure? - PullRequest
6 голосов
/ 19 мая 2011

Интересно, есть ли способ использовать запланированные задачи с SQL Azure?Мы ценим любую помощь.

Суть в том, что я хочу выполнять простые однострочные операторы каждый день и не хочу устанавливать рабочую роль.

Ответы [ 4 ]

6 голосов
/ 19 мая 2011

Сегодня нет эквивалента агента SQL для SQL Azure. Вы должны были бы вызвать свой однострочный оператор из фоновой задачи. Однако, если у вас уже есть веб-роль, вы можете легко создать поток для обработки этого в вашей веб-роли без необходимости создания рабочей роли. Я написал в блоге о понятии здесь . Чтобы создать поток, вы можете сделать это либо в обработчике события OnStart () (где экземпляр Role еще не добавлен в балансировщик нагрузки), либо в методе Run () (где экземпляр Role был добавлен в нагрузку). балансир). Обычно рекомендуется выполнить настройку в OnStart ().

Одно предупреждение, которое может быть неочевидным, независимо от того, выполняете ли вы этот вызов в своей собственной рабочей роли или в фоновом потоке существующей веб-роли: если вы масштабируете свою роль, скажем, до двух экземпляров, вам необходимо убедиться, что ежедневный вызов происходит только из одного экземпляра (в противном случае вы можете получить либо дубликаты, либо, возможно, дорогостоящую операцию, выполняемую несколько раз). Чтобы избежать этого, можно использовать несколько методов, таких как блокировка строки таблицы или аренда BLOB-объекта хранилища Azure. В первом случае вы можете использовать эту строку для хранения метки времени последнего выполнения операции. Если вы получаете блокировку, вы можете проверить, произошла ли операция в течение установленного временного окна (может быть, через час?), Чтобы решить, выполнял ли ее один из других экземпляров. Если вам не удалось получить блокировку, вы можете предположить, что другой экземпляр имеет блокировку и выполняет команду. Есть и другие техники - это всего лишь одна идея.

3 голосов
/ 19 мая 2011

В дополнение к ответу Дэвида, если у вас много запланированных заданий, возможно, стоит взглянуть на:

(Вы можете использовать quartz.net в потоке, который упоминал Дэвид, но lokad.cloud потребует немного большего архитектурного изменения)

2 голосов
/ 13 ноября 2012

Решив проблему с несколькими ролями, выполняющими одну и ту же задачу, вы можете проверить идентификатор экземпляра роли и убедиться, что только первый экземпляр выполнит задачу.

using Microsoft.WindowsAzure.ServiceRuntime;

        String g = RoleEnvironment.CurrentRoleInstance.Id;
        if (!g.EndsWith("0"))
        {
            return;
        }
2 голосов
/ 22 марта 2012

Я надеюсь, что приемлемо говорить о вашей собственной компании. У нас есть веб-сервис, который позволяет вам сделать это. Вы можете щелкнуть эту ссылку, чтобы узнать больше о том, как запланировать выполнение запросов SQL Azure .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...