【发布时间】:2014-03-10 09:49:59
【问题描述】:
我正在使用SQL Server 2008 R2。
我确实有一个每天执行存储过程的 SQL 作业8:00 AM。
在stored里面有一条语句:
DECLARE @midnight datetime,
@startTime datetime = GETUTCDATE();
-- Has this stored procedure already run for today?
IF EXISTS (SELECT 1 FROM [SystemEventLog] WHERE [CreatedDateTime_UTC] >= CAST(@midnight AS DATE) AND [CreatedDateTime_UTC] < DATEADD(DD, 1, CAST(@midnight AS DATE)))
BEGIN
RETURN
END
-- log that this storedproc ran
DECLARE @SystemEventLogId int
INSERT INTO [dbo].[SystemEventLog] ( [EventType_Id], [StoredProcName], [Details] )
VALUES( 1, 'StoredProcedureOne', null )
根据评论,这个块正在检查这个存储过程今天是否已经运行,如果是则返回。
但我不知道它如何检查这个程序今天是否已经运行?
谁能解释一下?
谢谢。
【问题讨论】:
-
由于您没有给出SP的全文,所以只能猜测。我的猜测是存储过程(或它调用的东西)在执行时将记录写入
[SystemEventLog]。
标签: sql sql-server sql-server-2008 sql-server-2005 sql-server-2008-r2