Я использую агент SQL Server для планирования даже задач без базы данных - это плохая идея?

Поскольку я - администратор баз данных (и во многих случаях - де-факто sysadmin), SQL Server устанавливается практически на каждом сервере, с которым я должен работать регулярно. Недавно я понял, что я использую SQL Agent в качестве планировщика заданий практически в каждом случае, а не в собственном планировщике задач Windows.

С моей точки зрения, агент SQL имеет ряд преимуществ перед собственным планировщиком задач Windows:

  • Удаленный (с моей рабочей станции) запуск /остановка /мониторинг задач
  • Общие расписания (а не каждая отдельная задача)
  • Несколько шагов и поток управления
  • Различные типы задач
  • Предупреждения о сбое /завершении
  • Может быть настроен на то, чтобы действовать как разные пользователи.
  • (умеренно) описательные сообщения об ошибках, а не только код ошибки

Однако я не могу избежать чувства, что это плохая практика - агент SQL должен быть зарезервирован только для задач, связанных с базой данных, и я должен оставить задачи уровня ОС, запущенные в планировщике задач Windows, несмотря на мою нелюбовь к ее удобство и простота использования.

Можно ли полагаться на SQL-агент таким образом? Если нет, следует ли мне подумать о стороннем планировщике задач Windows, чтобы получить некоторые функциональные возможности, которые я ищу?

12 голосов | спросил SqlRyan 22 SatEurope/Moscow2012-12-22T02:53:03+04:00Europe/Moscow12bEurope/MoscowSat, 22 Dec 2012 02:53:03 +0400 2012, 02:53:03

3 ответа


6

Лично я считаю, что самым большим предостережением будет сложность в сохранении списка рабочих мест. Насколько мне известно, вы не можете создавать папки для организации заданий, поэтому большое количество будет громоздким. Я не уверен на 100%, хотя, поскольку ни один из моих серверов не имеет более дюжины или около того заданий. Сервер 2008 и более поздний планировщик заданий позволяют значительно упростить организацию, IMO и, как правило, имеют гораздо лучшую функциональность, чем предыдущие версии. Я уверен, что сторонние приложения выполняют еще лучшую работу. Я бы плакал, если бы мне пришлось использовать планировщик задач Server 2003 или at.exe.

Вторая оговорка, о которой я могу думать, потенциально может наложить слишком много нагрузки на SQL-сервер. Агент - небольшая программа, но выполнение длинной или сложной задачи может легко потреблять много ресурсов. Эти ресурсы не будут доступны для механизма SQL. Поскольку для SQL-сервера запрограммировано около 80% доступной системной памяти, это может быть проблемой.

В-третьих, резервное копирование может быть проблемой. Вам понадобится не только резервное копирование файловой системы, но и база данных msdb, позволяющая восстанавливать задания (или использовать что-то для сценариев задач в текстовом файле). Это добавляет уровень сложности для аварийного восстановления.

Наконец, вы не захотите быть в положении, когда вы платите за лицензию SQL Server только для запуска агента SQL Server. Если база данных будет выведена из эксплуатации, вам необходимо разработать план переноса агента SQL Server.

ответил Bacon Bits 22 SatEurope/Moscow2012-12-22T18:39:19+04:00Europe/Moscow12bEurope/MoscowSat, 22 Dec 2012 18:39:19 +0400 2012, 18:39:19
8

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

В то время как это в значительной степени субъективно (и в этом формате будет сложно получить «правильный» ответ), я не думаю, что в этом случае есть что-то неправильное, кроме того, что он становится единственной точкой отказа.

Это может быть нецелесообразно, если все задачи взаимодействуют с сервером базы данных или зависят от него, и запущены службы SQL Server (в нашем случае это было сделано).

О, и вам нужно добавить обработку ошибок для случаев, когда сервер, на котором выполняется попытка задачи, не работает - вам не нужно было бы делать, если задача была настроена на этом сервере.

ответил Aaron Bertrand 22 SatEurope/Moscow2012-12-22T03:05:51+04:00Europe/Moscow12bEurope/MoscowSat, 22 Dec 2012 03:05:51 +0400 2012, 03:05:51
0

Я бы, скорее всего, воспользовался SQL Agent над диспетчером задач Windows ... очевидно, для задач, связанных с базой данных.

Если вы можете вообще кодировать или иметь людей, которые могут кодировать, вы можете сделать совсем немного с консольными приложениями и обернуть их в создателя службы, например TopShelf (http://topshelf-project.com/). Это может быть дешевый /легкий взломать, чтобы немного отделить от SQL Agent за все и начать также давать вам уровень для очередей, если вы на тот момент.

Лично вы, кажется, достаточно заботитесь об этом, а также достаточно осведомлены о своих ошибках, что, я думаю, с вами все будет в порядке. Это люди, которые не заботятся /не знают, что я действительно волнуюсь. Я не сомневаюсь, что вы будете оценивать свои решения на разумные промежутки времени и действовать соответственно.

ответил Gator 22 SatEurope/Moscow2012-12-22T05:24:09+04:00Europe/Moscow12bEurope/MoscowSat, 22 Dec 2012 05:24:09 +0400 2012, 05:24:09

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132