Служба Windows или работа SQL? - PullRequest
9 голосов
/ 30 октября 2008

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

Обновление:

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

Ответы [ 6 ]

8 голосов
/ 30 октября 2008

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

7 голосов
/ 30 октября 2008

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

5 голосов
/ 30 октября 2008

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

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

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

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

1 голос
/ 30 октября 2008

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

Если бы я был дома, я бы сказал, SQL-задание. Это просто еще один сервис.

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

0 голосов
/ 30 октября 2008

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

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