Я запускаю 64-разрядную версию разработчика SQL Server 2008 с пакетом обновления 1 (SP1). У меня есть работа агента SQL Server. В рамках этой работы я хочу получить job_id своей работы.
В MSDN (http://msdn.microsoft.com/en-us/library/ms175575(v=SQL.100).aspx) вы можете найти описание использования токенов в шагах задания. Ничего себе, отлично, вот что я ищу! Просто используйте (JOBID).
С SQL Server 2005 с пакетом обновления 1 (SP1) вы должны использовать макрос как $ (ESCAPE_NONE (JOBID)). Нет проблем.
Но если вы попытаетесь пример:Агент SQL Server - получить свой собственный job_id
DECLARE @name NVARCHAR(128)
select @name = name from msdb.dbo.sysjobs where job_id = $(ESCAPE_SQUOTE(JOBID))
PRINT @name
вы получите:
Неправильный синтаксис около 'ESCAPE_SQUOTE'. (Microsoft SQL Server, ошибка: 102)
Хорошо, теперь с нуля:
PRINT N'$(ESCAPE_SQUOTE(JOBID))'
приводит 0xE33FE637C10B3C49A6E958BB3EF06959 но job_id является 37E63FE3-0BC1-493C-A6E9-58BB3EF06959
"N" I думаю делает неявное преобразование в NVARCHAR (JOBID) ...
Хорошо, я думаю, что мне нужно заботиться о типе данных (JOBID). В книге "SQL Server 2008 Administration" на стр 168/169 есть также пример использования (JobId):
declare @jobid binary(16)
SELECT @jobid =Convert(Uniqueidentifier,$(ESCAPE_NONE(JOBID)))
результаты в:.
Неправильный синтаксис около '(' (Microsoft SQL Server, ошибка :.. 102)
Я совершенно запутался в настоящее время может порадовать кого-то помочь мне с хорошим советом или раствором Каждый вид помощи ценится
с наилучшими пожеланиями Helmut