Sono in esecuzione una Developer Edition a 64 bit di SQL Server 2008 con Service Pack 1 installato. Ho un processo SQL Server Agent. All'interno di questo lavoro voglio ottenere il job_id del mio lavoro.
Su MSDN (http://msdn.microsoft.com/en-us/library/ms175575(v=SQL.100).aspx) è possibile trovare una descrizione dell'utilizzo dei token nelle fasi del lavoro. Wow, fantastico, è quello che sto cercando !! Basta usare (JOBID).
Poiché SQL Server 2005 SP1 è necessario utilizzare macro come $ (ESCAPE_NONE (JOBID)). Nessun problema.
Ma se si tenta l'esempio:Agente SQL Server - ottenere il mio job_id
DECLARE @name NVARCHAR(128)
select @name = name from msdb.dbo.sysjobs where job_id = $(ESCAPE_SQUOTE(JOBID))
PRINT @name
si ottiene:
la sintassi non corretta in prossimità 'ESCAPE_SQUOTE'. (Microsoft SQL Server, errore: 102)
Ok, ora da zero:
PRINT N'$(ESCAPE_SQUOTE(JOBID))'
risultati in 0xE33FE637C10B3C49A6E958BB3EF06959 ma il job_id è 37E63FE3-0BC1-493C-A6E9-58BB3EF06959
La "N '" io pensa di effettuare una conversione implicita in NVARCHAR del (JOBID) ...
Ok, penso che mi debba interessare il tipo di dati di (JOBID). Nel libro "SQL Server 2008 Administration" a pagina 168/169 c'è anche un esempio di utilizzo (JOBID):
declare @jobid binary(16)
SELECT @jobid =Convert(Uniqueidentifier,$(ESCAPE_NONE(JOBID)))
risultati in:.
la sintassi non corretta in prossimità '(' (Microsoft SQL Server, Error :.. 102)
sono totalmente confuso ora Potrebbe per favore qualcuno mi aiuti con un buon consiglio o una soluzione Ogni tipo di aiuto è apprezzato
migliori saluti Helmut