Как определить, выполняется ли хранимая процедура в SQL Server 2008 R2 - PullRequest
2 голосов
/ 21 июня 2011

Есть ли представление или внутренний sp, чтобы сделать это?

Например, у меня есть sp spGoesOnForSomeTime.

Если я отключу это, то какой-то человек закроет мой компьютер,как узнать, работает ли он по-прежнему или нет?

Я понимаю, что могу использовать SQL Profiler и ActivityMonitor, но в конечном итоге хочу передать эту информацию обратно через веб-приложение.

РЕДАКТИРОВАТЬ: Извинения, это не локальное соединение.

Ответы [ 4 ]

1 голос
/ 21 июня 2011

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

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

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

1 голос
/ 21 июня 2011

При запуске из локальной среды Management Studio соединение будет разорвано (закрыто) при закрытии SSMS.

Любые транзакции будут отменены, все блокировки будут сняты. Если вы находитесь в процессе значительных изменений данных, процесс перестанет работать, а соединение все еще будет закрыто, но откат все равно продолжится

Так что нет необходимости проверять на основании приведенных фактов ...

0 голосов
/ 21 июня 2011

Зависит от того, запускаете ли вы его с помощью SqlServerAgent или только через Mgmt Studio.

Как сказал @gbn, после того, как вы отключите его, любая работа, использующая это соединение, также прекратится.

I 'Можно сказать, создать запланированное задание, и тогда оно не зависит от вашего соединения.

0 голосов
/ 21 июня 2011

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

Если это для обслуживания базы данных, я бы использовал sp_who или sp_who2.

EDIT: На самом деле, sp_who и sp_who2, скорее всего, покажут вам текущую команду, а не имя самой хранимой процедуры. Вы можете попробовать использовать системное динамическое представление sys.dm_exec_sql_text, но это также не всегда будет точным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...