在我的SQL Server 2008中,存储过程P_ABC
计划在每天凌晨2点运行。
但是,如何验证此程序P_ABC
是否安排在每天凌晨2点运行,并且它始终在凌晨2点运行?是否有任何查询来获取计划在特定时间运行的过程列表?
答案 0 :(得分:1)
这个问题太老了,但我仍在发布。您可以尝试-
CREATE PROCEDURE MyTask
AS
BEGIN
SET NOCOUNT ON;
-- For executing the stored procedure at 11:00 P.M
declare @delayTime nvarchar(50)
set @delayTime = '23:00'
while 1 = 1
begin
waitfor time @delayTime
begin
--Name for the stored proceduce you want to call on regular bases
execute [DatabaseName].[dbo].[StoredProcedureName];
end
end
END
然后
-- Sets stored procedure for automatic execution.
sp_procoption @ProcName = 'MyTask',
@OptionName = 'startup',
@OptionValue = 'on'
答案 1 :(得分:0)
我不知道能够简单地查询SQL以找出存储过程何时运行的任何选项。我有一系列审核表来存储这些信息。设置需要花费一些时间,但会为您提供所需的一切。
在较高级别,您需要在每个存储过程中执行以下操作:
调用将为特定作业分配新(递增)ID的存储过程。此过程还将存储正在运行的过程的名称(作为参数传递)以及何时在表中启动。
在程序结束时,使用原始ID调用另一个存储过程,并使用结束时间更新审核记录。
这很有效,因为你知道什么是运行,什么时候运行以及需要多长时间。
答案 2 :(得分:0)
不确定这正是您所需要的,但您可以在下面查看以下代码。
你也可以在那里找到它: SQL Server Find What Jobs Are Running a Procedure
SELECT j.name
FROM msdb.dbo.sysjobs AS j
WHERE EXISTS
(
SELECT 1 FROM msdb.dbo.sysjobsteps AS s
WHERE s.job_id = j.job_id
AND s.command LIKE '%procedurename%'
);
使用此方法,您可以列出所有商店过程(按名称),然后查找包含这些商店过程的所有作业(或更具体的步骤)。
请参阅此问题/答案列出商店程序:Query to list all stored procedures
由于