создание временных меток журнала с использованием хранимых процедур в SQL Server 2005 - PullRequest
1 голос
/ 16 февраля 2010

У меня есть хранимая процедура, в которой есть некоторые выбранные операторы и операторы вставки.

Можно ли как-нибудь зарегистрировать метки времени выполнения до и после sqls внутри хранимой процедуры?

Ответы [ 2 ]

4 голосов
/ 16 февраля 2010

Если это не то, что вы хотите оставить навсегда (т. Е. Это просто для целей отладки / анализа производительности), тогда вам лучше всего использовать SQL Profiler и отслеживать событие SP: StmtCompleted, которое будет записывать статистику для каждого оператора в спрок. Вы можете записать эти данные в таблицу базы данных.

Редактировать: Запуск SQL Profiler:
1) В SSMS в разделе «Инструменты» выберите «SQL Server Profiler».
2) Подключитесь к вашему БД-серверу, который вы хотите отслеживать.
3) В открывшемся диалоговом окне свойств трассировки перейдите на вкладку «Выбор событий» и установите флажок «Показать все события»
4) Сетка будет отображать все типы событий, которые вы можете отслеживать. Найдите раздел «Хранимые процедуры» и установите флажок SP: StmtCompleted, чтобы определить, что вы хотите отслеживать события такого типа.
5) Вкладка «Общие» позволяет сохранить трассировку в файл или в таблицу БД, если вы хотите. Или вам не нужно ни сохранять его, просто отобразить на экране. Вы всегда можете сохранить его в таблицу / файл позже, если вам это действительно нужно.
6) Когда вы будете готовы, просто нажмите «Выполнить»
Для получения дополнительной информации о SQL Profiler см. MSDN

Если это то, что вы хотите сохранить (например, таблицу аудита), то вам нужно будет самостоятельно вставить записи в вашу собственную таблицу аудита, например,

DECLARE @StartTime DATETIME
SET @StartTime = GETDATE()

SELECT Something FROM SomeTable WHERE....

INSERT MyAuditTable (Statement, StartTime, EndTime)
VALUES ('SELECT Something FROM SomeTable WHERE...', @StartTime, GETDATE())
0 голосов
/ 16 февраля 2010

Конечно. Добавьте TSQL для записи в таблицу аудита в начале и в конце выполнения, добавив TRY/CATCH обработку ошибок, чтобы избежать раннего выхода.

...