我正在运行安装了Service Pack 1的SQL Server 2008 64位开发人员版.我有一个SQL Server代理作业.在这份工作中,我想得到自己工作的job_id.
在MSDN(http://msdn.microsoft.com/en-us/library/ms175575 ( v=SQL.100 ) .aspx)上,您可以找到在作业步骤中使用令牌的说明.哇,太棒了,这就是我要找的!! 只需使用(JOBID).
从SQL Server 2005 SP1开始,您必须使用像$(ESCAPE_NONE(JOBID))这样的宏.没问题.
但是如果你试试这个例子:
DECLARE @name NVARCHAR(128)
select @name = name from msdb.dbo.sysjobs where job_id = $(ESCAPE_SQUOTE(JOBID))
PRINT @name
Run Code Online (Sandbox Code Playgroud)
你得到:
'ESCAPE_SQUOTE'附近的语法不正确.(Microsoft SQL Server,错误:102)
好的,现在从头开始:
PRINT N'$(ESCAPE_SQUOTE(JOBID))'
Run Code Online (Sandbox Code Playgroud)
结果0xE33FE637C10B3C49A6E958BB3EF06959但JOB_ID是37E63FE3-0BC1-493C-A6E9-58BB3EF06959
的"N'"我觉得做一个隐式转换到(JOBID)的NVARCHAR ......
好吧,我想我要关心的数据类型( JOBID).在这本书中的"SQL Server 2008管理"一百六十九分之一百六十八页面上有同样使用(JOBID)的例子:
declare @jobid binary(16)
SELECT @jobid =Convert(Uniqueidentifier,$(ESCAPE_NONE(JOBID)))
Run Code Online (Sandbox Code Playgroud)
结果:
.附近有语法错误('(的Microsoft SQL Server,错误:102)
.我完全糊涂了,现在请能有人帮我一个好的建议或解决方案各式各样的帮助表示赞赏.
最好的问候Helmut