2016-07-06 2 views
0

У нас есть 4 часа работы DataWarehouse, которая выполняется каждые 4 часа по 4 часа графика. Мы хотим создать новое «ежедневное» расписание и иметь несколько процессов, которые не работают.Зависимость от работы агента SQL Server

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

Как это возможно? Благодаря!

Пожалуйста, не предлагайте сторонние варианты, так как я не контролирую инфраструктуру.

+0

Когда выполняется работа SQL Agent Job, такое же задание не будет запускаться снова, даже если оно запланировано для запуска – TheGameiswar

ответ

1

Сохраните всю информацию о работе в одной таблице, включая состояние работы, выполняемое, завершено. Когда вы выполняете ежедневную работу, вам нужно проверить, что 4-е задание успешно завершено, а затем начать ежедневную работу и после завершения 4-го задания активировать ежедневную работу.

create TABLE [dbo].[tblDailyJob](
    [JobId] [int] NOT NULL, 
    [JobDesc] [varchar](500) NOT NULL, 
    [JobStartTime] [datetime] NULL, 
    [JobEndTime] [datetime] NULL, 
    [JobStatus] [int] NOT NULL, 
CONSTRAINT [PK_tblDailyJob] PRIMARY KEY CLUSTERED 
(
    [JobId] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 

ALTER TABLE [dbo].[tblDailyJob] ADD CONSTRAINT [DF_tblDailyJob_JobStatus] DEFAULT ((0)) FOR [JobStatus] 
GO 

работа 0 Не СТАТУС началось, 1 В процессе, 2 Завершенный, 3 Failed

insert into tblDailyJob values(1,'1st Job',null,null,0) 
insert into tblDailyJob values(2,'2nd Job',null,null,0) 
insert into tblDailyJob values(3,'3rd Job',null,null,0) 
insert into tblDailyJob values(4,'4th Job',null,null,0) 
insert into tblDailyJob values(5,'Daily Job',null,null,0) 

установить время начала до того excecuting работы и время окончания и состояние работы после завершения работы

после завершения 4-го задания запускайте свою ежедневную работу или если вы запускаете ее вручную, то проверка выполнения 4-го задания или нет.

вы также можете использовать расписание задач для этого же.

+0

привет привет, есть ли у вас примеры того, как это будет выглядеть? – jhowe

0

Взгляните на sp_getapplock. По сути, вы можете создать свою собственную блокировку, которая подчиняется всей нормальной SQL-блокировке. В вашем случае вы можете сказать: «Подождите, пока я не получу эту блокировку, прежде чем продолжить».

Смежные вопросы