Агент SQL Server - может задание запрашивать информацию о себе - PullRequest
0 голосов
/ 23 марта 2009

Не думаю, что кто-то знает, может ли задание агента SQL Server запрашивать информацию о себе, например, свой собственный идентификатор или путь, с которого он запускается? Я знаю о xp_sqlagent_enum_jobs и sp_help_job, но это не помогает, потому что вы должны указать идентификатор задания.

Идея состоит в том, что нам нужен код, которым мы не должны управлять, имея возможность вызывать sproc, который будет идентифицировать текущее задание. Есть идеи?

Ответы [ 2 ]

4 голосов
/ 06 апреля 2009

Да, но это не красиво.

Посмотрите на процессы sys.sys (или процессы dbo.sys в SQL 2000 и ниже). Имя программы будет SQL-агентом с двоичным значением в конце. Это двоичное значение является двоичным значением руководства работы. Итак, подставьте это значение и выполните поиск в таблице msdb.dbo.sysjobs, чтобы выяснить, что это за работа (вам нужно привести sysjobs.job_id к varbinary (100), чтобы значения соответствовали).

Я же говорил, что это не красиво, но будет работать.

0 голосов
/ 12 июля 2010

противный !!! но я думаю, что это может сработать ...

например. используется в течение работа - select * from msdb..sysjobs where job_id = dbo.fn_currentJobId()

дай мне знать.

create function dbo.fn_CurrentJobId()  
returns uniqueidentifier  
as  
begin  
 declare @jobId uniqueidentifier  

 select @jobId = j.job_id  
 from master..sysprocesses s (nolock)   
 join msdb..sysjobs j (nolock)  
   on (j.job_id = SUBSTRING(s.program_name,38,2) + SUBSTRING(s.program_name,36,2) + SUBSTRING(s.program_name,34,2) + SUBSTRING(s.program_name,32,2) + '-' + SUBSTRING(s.program_name,42,2) + SUBSTRING(s.program_name,40,2) + '-' + SUBSTRING(s.program_name,46,2) + SUBSTRING(s.program_name,44,2) + '-' + SUBSTRING(s.program_name,48,4) + '-' + SUBSTRING(s.program_name,52,12) )
 where s.spid = @@spid  

 return @jobId  
end  
go

спасибо за информацию, хотя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...