Який найкращий спосіб відстежувати тривалі запити в SQL Server?


10

Мені доводиться виконувати досить багато тривалих запитів (перебудова індексів, оновлення великих наборів даних) для моєї бази даних. Чи є альтернатива запуску запиту в студії управління SQL Server і перевірки на нього щогодини або близько того? Я хотів би, щоб мені було надіслано електронною поштою або надіслали повідомлення, але не знаю найкращого інструменту для цього.

Відповіді:


4

Слідом за публікацією Gaius: Ви можете створити .SQL-скрипт, який виконує все, що вам потрібно, використовуючи db перед сценарієм -> створити завдання SQL Agent типу операційної системи, що викликає сценарій:

sqlcmd -E -S SERVERNAME -i "c: \ YOURSCRIPT.sql" -o "C: \ YOURSCRIPT_LOG.log"

Додайте новий крок та використовуйте процедуру msdb.dbo.sp_send_dbmail для надсилання електронної пошти. Ця функція може бути налаштована для відображення всередині пошти конкретного запиту з таблиць SQL для підтвердження виконання сценарію ... наприклад, dbcc showcontig ваших індексів відновлення.


1

У вас є можливість використовувати завдання SQL? Ви можете робити сповіщення тощо. Що стосується отримання періодичних сповіщень, для цього знадобиться деякий код у межах збережених процедур тощо.


1

Так, просто використовуйте xp_sendmail . Ви можете надіслати заздалегідь встановлене повідомлення або результати SQL-оператора так само просто. Ця функція доступна з SQL Server 6.5, однак вона має бути застарілою в Деналі - якщо це буде постійною частиною вашої операції, то вам слід використовувати Database Mail, що набагато більше "підприємство".


1

Я завжди пишу повідомлення в таблицю "EventLog". Обробляючи велику кількість даних, я керую цими даними, а після кожного запису записую оновлення статусу в EventLog.

Коли я хочу перевірити хід тривалого процесу, я просто запитую таблицю EventLog.

Приклад виходу:

-------------------
- Моє велике оновлення -
-------------------
Розпочато: 2011-05-03 10:00:00

Записи для обробки: 1 000 000
Шматки: 200

--- шматок 1 ---
Спроба оновити MyTable
Оновлено записи: 5000
Залишки записів: 995 000
Пропускна здатність: 4210 записів в секунду

--- шматок 2--
Спроба оновити MyTable
Оновлено записи: 5000
Залишки записів: 990 000
Пропускна здатність: 3555 записів в секунду

--- шматок 3--
тощо.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.