Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Узнать Job_Id из джоба  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1838
Есть ли в MSSQL возможность узнать job_id во время выполнения джоба, аналог @@PROCID.?
При этом может быть в это время запущено одновременно 100500 штук. Но каждому надо узнать именно свой uid.
4 апр 14, 13:24    [15832747]     Ответить | Цитировать Сообщить модератору
 Re: Узнать Job_Id из джоба  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
При выполнении джоба агент в program_name пишет примерно следующее: SQLAgent - TSQL JobStep (Job 0x0E392B1267A9AA4E893294402852DA74 : Step 1)

Собственно, получаем по @@spid значение program_name, парсим его и получаем @job_id.

Сообщение было отредактировано: 4 апр 14, 13:35
4 апр 14, 13:35    [15832822]     Ответить | Цитировать Сообщить модератору
 Re: Узнать Job_Id из джоба  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Можно и название:
declare @JobID uniqueidentifier;
declare @name nvarchar(128);

set @JobID = CONVERT(uniqueidentifier, $(ESCAPE_NONE(JOBID))); 

select
	@name = name
from msdb.dbo.sysjobs 
where job_id = @JobID;

Только сработает это только в шаге задания.

Сообщение было отредактировано: 4 апр 14, 13:39
4 апр 14, 13:38    [15832844]     Ответить | Цитировать Сообщить модератору
 Re: Узнать Job_Id из джоба  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1838
Спасибо, как-то не вспомнил об этом.
4 апр 14, 13:39    [15832858]     Ответить | Цитировать Сообщить модератору
 Re: Узнать Job_Id из джоба  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1838
tpg
Можно и название:
declare @JobID uniqueidentifier;
declare @name nvarchar(128);

set @JobID = CONVERT(uniqueidentifier, $(ESCAPE_NONE(JOBID))); 

select
	@name = name
from msdb.dbo.sysjobs 
where job_id = @JobID;

Только сработает это только в шаге задания.


это можно обойти и в Хранимой процедуре передав в нее Id как параметр. Мне пойдет.
DECLARE
  @Job_Id uniqueidentifier

SET @Job_Id = CONVERT(uniqueidentifier, $(ESCAPE_NONE(JOBID)))

EXEC start @Job_Id
8 апр 14, 16:02    [15850511]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить