gpt4 book ai didi

sql-server - SQL Server 代理 - 获取我自己的 job_id

转载 作者:行者123 更新时间:2023-12-02 18:10:43 28 4
gpt4 key购买 nike

我正在运行安装了 Service Pack 1 的 SQL Server 2008 64 位开发人员版。我有一份 SQL Server 代理工作。在这个工作中,我想获取我自己工作的 job_id。
在 MSDN (http://msdn.microsoft.com/en-us/library/ms175575(v=SQL.100).aspx) 上,您可以找到在作业步骤中使用 token 的说明。哇,太棒了,这就是我要找的!!只需使用(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

你得到:
“ESCAPE_SQUOTE”附近的语法不正确。 (Microsoft SQL Server,错误:102)
好的,现在从头开始:

PRINT N'$(ESCAPE_SQUOTE(JOBID))'  

结果为 0xE33FE637C10B3C49A6E958BB3EF06959 但 job_id 为37E63FE3-0BC1-493C-A6E9-58BB3EF06959
我认为“N”隐式转换为 (JOBID) 的 NVARCHAR...
好吧,我想我必须关心(JOBID)的数据类型。在《SQL Server 2008 Administration》一书中的第 168/169 页中,还有一个使用 (JOBID) 的示例:

declare @jobid binary(16)
SELECT @jobid =Convert(Uniqueidentifier,$(ESCAPE_NONE(JOBID)))

结果:
“(”附近的语法不正确。(Microsoft SQL Server,错误:102)
我现在完全糊涂了。请有人帮助我提供好的建议或解决方案。感谢各种帮助。

最诚挚的问候赫尔穆特

最佳答案

我们最近在这方面遇到了麻烦,并且没有采用您在 MSDN 中找到的路线。相反,我们直接按名称从 dbo.sysjobs 恢复 jobid(与您的示例相反),然后在作业中使用它来检查执行状态(如果作业状态发生更改,则退出长时间运行的 while 循环)。

declare @jobid uniqueidentifier
SELECT @jobid = job_id from msdb.dbo.sysjobs where name = '[blah]'

关于sql-server - SQL Server 代理 - 获取我自己的 job_id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4213868/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com