Я использую 64-разрядную версию SQL Server 2008 Developer Edition с установленным пакетом обновления 1.
У меня есть работа агента SQL Server. В рамках этой работы я хочу получить job_id моей собственной работы.
На MSDN (http://msdn.microsoft.com/en-us/library/ms175575(v=SQL.100).aspx) вы можете найти описание использования токенов на этапах работы. Вау, отлично, это то, что я ищу!
Начиная с SQL Server 2005 с пакетом обновления 1 (SP1), вы должны использовать макрос типа $ (ESCAPE_NONE (JOBID)). Нет проблем.
Но если вы попробуете пример:
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» делает неявное преобразование в NVARCHAR из (JOBID) ...
Хорошо, я думаю, что я должен заботиться о типе данных (JOBID). В книге «Администрирование SQL Server 2008» на странице 168/169 также приведен пример использования (JOBID):
declare @jobid binary(16)
SELECT @jobid =Convert(Uniqueidentifier,$(ESCAPE_NONE(JOBID)))
Результат:
Неверный синтаксис рядом с '('. (Microsoft SQL Server, ошибка: 102)
Я сейчас совершенно сбит с толку. Может ли кто-нибудь помочь мне с хорошим советом или решением. Любая помощь приветствуется.
С наилучшими пожеланиями
Helmut