Автоматически выполнять запрос в MS SQL Studio каждый час

13

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

Бесконечный

WHILE(1=1)
BEGIN 
WAITFOR DELAY '01:00';
--do work
END

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

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

Есть ли решение этой проблемы?

Иван Кошелев
источник
1
Можете ли вы использовать Windows Scuduler на вашем компьютере?
сепия
12
Спросите кого-нибудь, у кого есть разрешение, чтобы запланировать это для вас.
Мистер Магу
@sepupic Это моя следующая страна исследований, если ничто в MS SS мне не поможет.
Иван Кошелев
Я согласен. Мне было бы очень неудобно запускать циклический код на моем клиентском компьютере. Что делать, если ваш компьютер вышел из строя, кто-то отключил его и т. Д. Я работал в подобных средах, где задания SQL были недоступны для команд приложений - потому что у нас был альтернативный вариант использования AutoSys или другого инструмента планирования, работающего на сервере приложений. Попробуйте узнать, как управляются другие запланированные задачи? Другим обходным решением может быть использование служб отчетов SQL Server ? Не идеально, я знаю ...
Терри С
9
Правильное решение - обратиться к администраторам баз данных и попросить их создать задание агента SQL Server для ежечасного выполнения этой очистки. Затем выясните, почему вы получаете данные в базе данных, которые так часто нуждаются в «очистке», и исправьте это .
alroc

Ответы:

22

Ваш друг - sqlcmd (Microsoft Technet)

  1. Создайте файл SQL со сценарием, необходимым для запуска задания очистки
  2. Запустите скрипт с sqlcmd.exe и любыми необходимыми параметрами.
  3. Создайте запланированное задание Windows и добавьте команду со всеми необходимыми параметрами.

Например

sqlcmd -d YOUR_DB -E -i YOUR_SCRIPT.SQL -o OUTPUTFILE.TXT 

Удачи.

Джон ака hot2use
источник
4
Убедитесь, что эти сценарии размещены на соответствующем сервере приложений / инструментов где-то вместе с запланированной задачей, а не на компьютере разработчика.
GER
7

Вам не нужна Management Studio для выполнения запросов.

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

Если вы используете версию, в которой это не поддерживается (поскольку вы не указали версию), существует также osql, который является клиентом командной строки, но этот инструмент устарел.

Затем вы можете запланировать команду с помощью любого планировщика, который вы хотите (например, Windows Task Scheduler) и выполнить что-то вроде этого:

OSQL -E -i c:\temp\dowork.sql

Взгляните на документацию, чтобы увидеть, какие опции у вас есть для выбора сервера и аутентификации.

Том V - попробуйте topanswers.xyz
источник
-1

Использование «агента SQL Server», который находится в MS SQL studio (в обозревателе объектов разверните свой сервер, и он обычно должен быть внизу списка), вероятно, является лучшим выбором.

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

Недостатком является то, что вам, вероятно, понадобятся повышенные права доступа, чтобы сделать это.

дц
источник
3
Вы, вероятно, упустили этот момент из вопроса: из-за политик организации я не могу создавать задания агента SQL Server [...]
Андрей М
@ Андрей: это все еще правильный ответ. Мы не должны помогать людям создавать тени ИТ, противоречащие потребностям их организации.
Дилан Нолл
1
@DylanKnoll: Ну, я думаю, что для ответчика было бы разумным признать, что ОП упоминает политику и включить аргументы против ее глупости (например, что-то вроде вашего комментария), но «не должно помогать»? Предложенный и принятый вариант не выглядит слишком отвратительным, поэтому придерживаться принципов может показаться немного жестким в этом случае.
Андрей М
Я также понимаю вашу точку зрения, но как насчет перспективы администраторов баз данных? Похоже, что кто-то пытается скрыть ошибки в дизайне БД, чтобы их не выявить.
Дилан Нолл
1
Он прочитал «Задания сервера SQL», прежде чем он был изменен на «Задания агента SQL Server». Я не думаю, что может быть другое значение для первого, чем второе. (Между прочим, это был не ФП; он был человеком, который понял немного ошибочный термин именно так, как я, и исправил его.) Однако первоначальную формулировку еще проще упустить, поэтому так или иначе, я все еще утверждаю, что это был недосмотр с вашей стороны :)
Андрей М