如何检查存储过程是否安排在特定时间 运行
How to check if the stored procedure is scheduled to run at specific time
在我的 SQL Server 2008 中,存储过程 P_ABC
被安排在每天 运行 2 a.m。
但是我如何验证此过程 P_ABC
被安排在每天 运行 2 a.m。与否,它总是 运行ning 在 2 a.m。?是否有任何查询可以获取计划在特定时间 运行 的程序列表?
我不知道有什么选项可以简单地查询 SQL 来找出存储过程何时为 运行。我有一系列的审计 tables 来存储这些信息。设置需要一些时间,但会为您提供所需的一切。
在高层次上,您需要在每个存储过程中执行以下操作:
调用将为特定作业分配新(递增)ID 的存储过程。此过程还将存储过程的名称 运行ning(作为参数传递)以及它在 table.
中启动的时间
在过程结束时,使用原始 ID 调用另一个存储过程,并使用结束时间更新审计记录。
这很有效,因为您知道什么是 运行、何时 运行 以及需要多长时间。
不确定这是否正是您所需要的,但您可以检查下面的这段代码。
您也可以在那里找到它:
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%'
);
使用这种方法,您可以列出所有存储过程(按名称),然后找到包含这些存储过程的所有作业(或更具体的步骤)。
请参考这个question/answer列出商店程序:Query to list all stored procedures
谢谢
这个问题太老了,但我仍然发布这个。你可以试试 -
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'
在我的 SQL Server 2008 中,存储过程 P_ABC
被安排在每天 运行 2 a.m。
但是我如何验证此过程 P_ABC
被安排在每天 运行 2 a.m。与否,它总是 运行ning 在 2 a.m。?是否有任何查询可以获取计划在特定时间 运行 的程序列表?
我不知道有什么选项可以简单地查询 SQL 来找出存储过程何时为 运行。我有一系列的审计 tables 来存储这些信息。设置需要一些时间,但会为您提供所需的一切。
在高层次上,您需要在每个存储过程中执行以下操作:
调用将为特定作业分配新(递增)ID 的存储过程。此过程还将存储过程的名称 运行ning(作为参数传递)以及它在 table.
中启动的时间
在过程结束时,使用原始 ID 调用另一个存储过程,并使用结束时间更新审计记录。
这很有效,因为您知道什么是 运行、何时 运行 以及需要多长时间。
不确定这是否正是您所需要的,但您可以检查下面的这段代码。
您也可以在那里找到它: 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%'
);
使用这种方法,您可以列出所有存储过程(按名称),然后找到包含这些存储过程的所有作业(或更具体的步骤)。
请参考这个question/answer列出商店程序:Query to list all stored procedures
谢谢
这个问题太老了,但我仍然发布这个。你可以试试 -
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'