Служба Windows или задание SQL?

У меня есть процесс архивирования, который в основном удаляет архивные записи через определенное количество дней. Что лучше: написать запланированное задание SQL или службу Windows для выполнения удаления? База данных - mssql2005.

Обновлять:

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

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
9
0
6 044
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Ответ принят как подходящий

Это зависит от того, чего вы хотите достичь. Хотите где-нибудь хранить удаленные архивы? Записать изменения? Задание SQL должно работать лучше, поскольку оно выполняется непосредственно в базе данных, но проще предоставить службе доступ к ресурсам за пределами базы данных. Так что это зависит от того, что вы хотите сделать ,,,

Как насчет использования задания агента SQL для выполнения запланированной задачи, которая вообще не требует взаимодействия с базой данных? Это «неправильно» ?!

Magnus Smith 21.12.2009 19:31

Зачем тебе это делать? Есть много более простых способов запустить запланированное задание.

Rune Grimstad 22.12.2009 01:22

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

В прошлом у нас выполнялось несколько заданий SQL. Однако недавно мы перешли к вызову этих процессов из кода .Net в качестве клиентского приложения, запускаемого из задачи расписания Windows, по двум причинам:

  1. Так проще реализовать такие функции, как ведение журнала.
  2. У нас есть другие пакетные задания, которые не выполняются в базе данных и, следовательно, должны быть в запланированных задачах Windows. Таким образом, все пакетные задания любого типа будут перечислены в одном месте.

Это для вас / для дома или это часть продукта, который вы распространяете.

Если дома, я бы сказал, что это работа по SQL. Это тоже еще одна услуга.

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

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

В этом случае у вас есть задача, которую нужно выполнять, и выполнять ее раз в день, каждый день. Таким образом, вам нужно либо задание в SQL Server, либо, как описал Джоэл, приложение (консоль или winforms), которое было настроено по расписанию для выполнения, а затем выгрузки из пространства памяти сервера.

Следуя за точкой зрения Кори, если она распространяется извне, нужно ли вам поддерживать SQL Express? Если нет, я бы сразу занялся SQL-заданием. В противном случае вам придется проявить больше творчества, поскольку в SQL Express нет агента SQL, который поставляется с полными версиями SQL 2005 (а также MSDE). Без агента SQL вам понадобится другой способ автоматического запуска задания. Это может быть служба Windows, запланированная задача (вызов приложения .NET, сценария PowerShell, сценария VBscript и т. д.) Или вы можете попытаться напрямую реализовать какой-либо триггер в SQL Server.

Другие вопросы по теме