Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как узнать название JOB в ходе выполнения этой JOB ?  [new]
missing.fox
Member

Откуда:
Сообщений: 264
Собственно вопрос в теме.
Есть выполняемая работа, так вот в процессе выполнения этой работы необходимо узнать имя этой работы.
Как это сделать, есть идеи?

Заранее спасибо за участие.
18 янв 11, 13:08    [10090140]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать название JOB в ходе выполнения этой JOB ?  [new]
Glory
Member

Откуда:
Сообщений: 104751
BOL - Using Tokens in Job Steps
18 янв 11, 13:09    [10090160]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать название JOB в ходе выполнения этой JOB ?  [new]
missing.fox
Member

Откуда:
Сообщений: 264
Прочел похожую статью:
http://msdn.microsoft.com/ru-ru/library/ms175575.aspx

Коллеги, не понятно, каким образом можно присвоить переменной какой либо идентификатор этого Джоба ...

У меня не получилось, если не трудно, подскажите ...

Например, результат вот этого примера:
DECLARE @msgString nvarchar(max)
SET @msgString = '$(ESCAPE_SQUOTE(A-MSG))'
SET @msgString = QUOTENAME(@msgString,'''')
PRINT N'Print ' + @msgString

Вот такой:
Print '$(ESCAPE_SQUOTE(A-MSG))'

А не тот, который подразумевается ...
19 янв 11, 16:04    [10097813]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать название JOB в ходе выполнения этой JOB ?  [new]
Glory
Member

Откуда:
Сообщений: 104751
missing.fox

А не тот, который подразумевается ...

А вы через токен A-MSG собрались получить имя джоба ?
19 янв 11, 16:07    [10097848]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать название JOB в ходе выполнения этой JOB ?  [new]
missing.fox
Member

Откуда:
Сообщений: 264
конечно же нет )))
через (JOBID)
19 янв 11, 16:12    [10097919]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать название JOB в ходе выполнения этой JOB ?  [new]
Glory
Member

Откуда:
Сообщений: 104751
missing.fox
конечно же нет )))
через (JOBID)

Т.е. этого примера вы уже не увидели ?

В. Использование токенов с макросом ESCAPE_NONE

Следующий пример является частью скрипта, который извлекает job_id из таблицы sysjobs и использует токен JOBID, чтобы заполнить переменную @JobID, которая была объявлена как бинарный тип данных ранее в скрипте. Имейте в виду, что с токеном JOBID используется макрос ESCAPE_NONE, так как для бинарного типа данных разделители не требуются. После выполнения скрипта обновления не нужно обновлять этот шаг задания.

SELECT * FROM msdb.dbo.sysjobs

WHERE @JobID = CONVERT(uniqueidentifier, $(ESCAPE_NONE(JOBID))) ;
19 янв 11, 16:14    [10097940]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать название JOB в ходе выполнения этой JOB ?  [new]
missing.fox
Member

Откуда:
Сообщений: 264
Возможно я не совсем корректно объяснил,
Есть Джоб, сам про себя джоб ничего не знает и этому джобу необходимо остановить себя по условию,
чтобы самого себя остановить, этому джобу надо про себя сто-то узнать, например имя самого себя.
Хочется написать универсальную процедуру.
Конечно же я знаю название этого Джоба и можно это забивать вручную, но это не системный подход ...
19 янв 11, 16:20    [10098026]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать название JOB в ходе выполнения этой JOB ?  [new]
Glory
Member

Откуда:
Сообщений: 104751
И что мешает то из запроса
SELECT * FROM msdb.dbo.sysjobs
WHERE @JobID = CONVERT(uniqueidentifier, $(ESCAPE_NONE(JOBID))) ;

получить имя джоба то ?
19 янв 11, 16:23    [10098056]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать название JOB в ходе выполнения этой JOB ?  [new]
missing.fox
Member

Откуда:
Сообщений: 264
Поправьте, пожалуйста, если я не прав.
Говорю на выполнение (не в джобе, просто):
DECLARE @JobID nvarchar;
go
SELECT * FROM msdb.dbo.sysjobs
WHERE @JobID = CONVERT(uniqueidentifier, $(ESCAPE_NONE(JOBID))) ;

Возвращает ошибку:
Сообщение 102, уровень 15, состояние 1, строка 3
Неправильный синтаксис около конструкции "(".
19 янв 11, 16:44    [10098337]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать название JOB в ходе выполнения этой JOB ?  [new]
Glory
Member

Откуда:
Сообщений: 104751
missing.fox
Поправьте, пожалуйста, если я не прав.
Говорю на выполнение (не в джобе, просто):

Вы бы еще в Оракле попробовали выполнить

"Агент SQL Server позволяет применять токены в скриптах шагов заданий на языке Transact-SQL. Применение токенов при написании шагов заданий обеспечивают такую же гибкость, какую дают переменные при написании программ. После добавления токена в скрипт шага задания агент SQL Server замещает токен во время выполнения, до того как шаг задания выполняется подсистемой Transact-SQL"
19 янв 11, 16:48    [10098377]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать название JOB в ходе выполнения этой JOB ?  [new]
missing.fox
Member

Откуда:
Сообщений: 264
То есть, на сколько мне понятно, просто написать хранимку и вызывать эту хранимку в Джобе не получится ...
20 янв 11, 13:10    [10103227]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать название JOB в ходе выполнения этой JOB ?  [new]
Glory
Member

Откуда:
Сообщений: 104751
missing.fox
То есть, на сколько мне понятно, просто написать хранимку и вызывать эту хранимку в Джобе не получится ...

Какой поворот истории
"просто написать хранимку и вызывать эту хранимку в Джобе" нет никаких проблем
Только причем тут "Как узнать название JOB в ходе выполнения этой JOB" ?
20 янв 11, 13:11    [10103238]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Как узнать название JOB в ходе выполнения этой JOB ?  [new]
tunknown
Member

Откуда:
Сообщений: 775
Glory
BOL - Using Tokens in Job Steps

Надо читать документацию, от неё польза бывает.

Если не читать документацию, то можно придумать другое. Такой метод может зависеть от версий сервера, поэтому опаснее в применении. Только для вызова из Агента.
declare @sAppName  varchar ( 256 )
 ,@sAppNamePattern varchar ( 256 )
 ,@sJodId  varchar ( 34 )
 ,@sJodStepId  varchar ( 10 )
----------
select @sAppName=  app_name() -- 'SQLAgent - TSQL JobStep (Job 0xFBE1061551889D4CAD10726795AFC1EC : Step 2)'
 ,@sAppNamePattern= 'SQLAgent - TSQL JobStep (Job %s : Step %s)'
----------
exec xp_sscanf
  @sAppName
  ,@sAppNamePattern
  ,@sJodId output
  ,@sJodStepId output
30 май 14, 11:19    [16096092]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать название JOB в ходе выполнения этой JOB ?  [new]
Glory
Member

Откуда:
Сообщений: 104751
tunknown
Glory
BOL - Using Tokens in Job Steps

Надо читать документацию, от неё польза бывает.

Ну так и почитайте http://msdn.microsoft.com/en-us/library/ms175575.aspx
30 май 14, 11:23    [16096114]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить