我有一个用Java编写的Sudoku游戏。 游戏的主要过程是主要方法。 我有一个while循环,其中有myClassObject.getCommandFromScanner()函数来使用Scanner读取输入,因此用户可以填充数独板上的空白位置或从菜单中选择其他选项(例如,保存,显示解决方案 ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
下午。 我在MS 2K8 BI服务器上运行了几个SQL Agent作业,其中一些每天运行,其他一些每小时运行,每两分钟一次(另一个进程的心跳监视器)。 还有一个应用程序,每隔24分钟就会每隔几分钟导入一次数据。 有时,更新和报告的某些组合会发生冲突,并且一个或另一个挂起半小时或更长时间,而不是通常的60秒。
虽然我需要弄清这些竞赛条件的根源,但与此同时,我想设置某些作业,例如在五分钟后自动消失。 我可以在SSIS或Windows计划任务中执行此操作,但是在SQL Agent中看不到任何方法。 这是可能的,还是我需要将任务包装在SSIS包中才能获得这种控制?
仅供参考,这是我最后使用的SQL Agent作业:
DECLARE @Cancelled BIT
EXEC dbo.CancelJob @JobName = 'ETL - Daily', @Cancelled = @Cancelled OUT
IF @Cancelled = 1
BEGIN
DECLARE @Success INT
EXEC @Success = msdb..sp_send_dbmail
@profile_name = 'Reporting',
@recipients = 'reporting@mycompany.com',
@subject = 'Cancelled Daily ETL'
IF @Success <> 0 RAISERROR('An error occurred while attempting to send an e-mail.', 16, @Success)
END
...这是CancelJob
背后的代码:
CREATE PROCEDURE dbo.CancelJob(@JobName VARCHAR(100), @OwnerName VARCHAR(100) = NULL, @Cancelled BIT OUT)
AS BEGIN
IF @OwnerName IS NULL SET @OwnerName = SUSER_NAME()
SET @Cancelled = 0
CREATE TABLE #JobInfo
(
Job_ID UNIQUEIDENTIFIER,
Last_Run_Date INT,
Last_Run_Time INT,
Next_Run_Date INT,
Next_Run_Time INT,
Next_Run_Schedule_ID INT,
Requested_To_Run INT,
Request_Source INT,
Request_Source_ID VARCHAR(100),
Running INT, -- This is the only field we want (sigh)
Current_Step INT,
Current_Retry_Attempt INT,
State INT
)
INSERT INTO #JobInfo
EXEC xp_sqlagent_enum_jobs 1, @OwnerName
DECLARE @Running INT = (SELECT Running FROM #JobInfo AS JI INNER JOIN msdb..sysjobs_view AS J ON JI.Job_ID = J.job_id WHERE J.name = @JobName)
IF @Running = 1
BEGIN
BEGIN TRY
EXEC msdb..sp_stop_job @job_name = @JobName
SET @Cancelled = 1
END TRY
BEGIN CATCH
-- If an error occurs, it is *probably* because the job finished before we could cancel it, which is fine
END CATCH
END
END
GO
xp_sqlagent_enum_jobs
是避免无法捕获的错误的技巧。
我从来不需要经常这样做,因此可能会有更好的长期解决方案,但是我创建了第二份工作,以在极少数需要执行此任务的情况下停止执行第一份工作。 我只是使用sp_stopjob过程来做到这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.