Intereting Posts
SQL для двух полей в базе данных Первичный ключ / внешнее соглашение об именах ключей Mysql Datatype для US Zip (почтовые коды) Выберите лучшие результаты, упорядоченные по частоте Как я могу разрешить пользователям sql-доступ к таблице, ограниченной определенными строками? Изменение нескольких столбцов в одном заявлении Есть ли лучший способ рассчитать медианную (не среднюю) Как использовать запрос SQL Order By для сортировки результатов без учета регистра? Динамическая таблица SQL Pivot Table mysql получает имена столбцов таблицы в алфавитном порядке Соединение SQL с выбором предыдущего сопоставимого значения с группой по Асинхронные вызовы с сохраненной процедурой SQL-оператор для удаления части строки Фильтрация строк с данными только числа в столбце SQL Каков наилучший способ скопировать подмножество строк таблицы из одной базы данных в другую в Postgres?

Windows Service или SQL Job?

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

Обновить:

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

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

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

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

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

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

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

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

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

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

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