Автоматично виконувати запит у MS SQL Studio щогодини


13

Я підтримую програму на великому підприємстві, одна з моїх ролей - очищення даних. Є запит, який мені потрібно виконувати щогодини, і я хотів би його автоматизувати. Через політику організації я не можу створювати завдання агента SQL Server або змінювати схему, можу лише маніпулювати даними.

Нескінченний

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

робить роботу для мене, але я знизаю плечима при думці про безперервний зв’язок.

В ідеалі я би сценаріював сам MS SS для виконання заданого фрагмента коду щогодини, але я не впевнений, чи можливо це.

Чи є рішення цієї проблеми?


1
Чи можете ви використовувати комп’ютер-програміст Windows на своєму ПК?
sepupic

12
Попросіть когось, хто має дозвіл, запланувати його для вас.
Містер Магуо

@sepupic Це мій наступний напрямок досліджень, якщо нічого в MS SS не може мені допомогти.
Іван Кошелєв

Я згоден. Мені було б дуже незручно працювати циклічним кодом на моєму клієнтському комп'ютері. Що робити, якщо ваш комп'ютер вийшов з ладу, хтось відключив його від мережі та ін. Я працював у подібних середовищах, де завдання SQL були недоступні командам додатків - тому що ми мали альтернативний варіант використання AutoSys або іншого інструменту планування, що працює на сервері додатків. Спробуйте і з’ясуйте, як керуються іншими запланованими завданнями? Іншим вирішенням може бути використання служб звітування SQL Server ? Не ідеально, я знаю ...
Terry C

9
Правильне рішення полягає в тому, щоб перейти до DBA і дати їм створити завдання агента 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 

Удачі.


4
Переконайтеся, що ці сценарії розміщені на відповідному сервері додатків / інструментів десь разом із Запланованою задачею, а не комп'ютером для розробки.
GER

7

Вам не потрібна студія управління для виконання запитів.

Якщо у вас дійсно немає можливості, щоб хтось запланував роботу для вас, ви повинні заглянути в sqlcmd, як зазначено у відповіді hot2use

Якщо ви користуєтеся версією, де це не підтримується (оскільки ви не вказали версію), є також osql, який є клієнтом командного рядка, але цей інструмент застарів.

Потім ви можете запланувати команду за допомогою будь-якого планувальника (наприклад, Планувальник завдань Windows) і запустити щось подібне:

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

Перегляньте документацію, щоб побачити, які варіанти у вас є для вибору та автентифікації сервера.


-1

Використання "агента SQL Server", який можна знайти в студії MS SQL (у програмі провідника об'єктів, розгорніть свій сервер, і це, як правило, внизу списку), мабуть, найкраща ставка.

Це створить завдання, яке можна встановити для виконання через певні інтервали. Завдання виконуватимуться як сервіс на сервері, а не клієнт. Це означає, що якщо ваш клієнт відключиться, він все ще буде працювати, а якщо сервер перезавантажиться (з невідомих причин), робота продовжить працювати, не потребуючи її повторної ініціалізації.

Мінусом є те, що вам, швидше за все, знадобляться підвищені права доступу, щоб мати змогу це зробити.


3
Ви, напевно, не помітили цього питання в питанні: Через політику організації я не можу створити завдання агента SQL Server [...]
Andriy M

@Andriy: Це все ще правильна відповідь. Ми не повинні допомагати людям робити тіньові ІТ проти потреб своїх організацій.
Ділан Нолл

1
@DylanKnoll: Ну, я думаю, було б доцільно, щоб відповідач визнав згадування про політику ОП і включив аргументи проти її дурості (щось, наприклад, у вашому коментарі), але "не слід допомагати"? Запропонований і прийнятий варіант не виглядає надто жорстоким, тому дотримання принципів здавалося б трохи суворим у цьому випадку.
Андрій М

Я також розумію, але що з перспективою DBA? Дуже багато, що хтось намагається приховати помилки в дизайні БД, щоб вони не з’явилися на світ.
Ділан Нолл

1
Він читав "завдання SQL-сервера", перш ніж його було змінено на "завдання агента SQL Server". Я не думаю, що для першого може бути інше значення, ніж останнє. (До речі, не ОП редагував це; людина, яка зрозуміла трохи помилковий термін саме так, як я, і виправила його.) Однак оригінальну формулювання навіть простіше помітити, так що, Так чи інакше, я все ще стверджую, що це був нагляд з вашого боку :)
Андрій М
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.