CREATE TABLE dbo.CorrelateAgentToSSIS
(
jobid uniqueidentifier NOT NULL
, runid uniqueidentifier NOT NULL
, insert_date datetime NOT NULL CONSTRAINT DF__CorrelateAgentToSSIS__insert_date DEFAULT (GETDATE())
);
有4列。第一个是SQLServer代理示例生成的guid。第二列是跟踪guid。 第0步看起来像
declare @jobid uniqueidentifier = CONVERT(uniqueidentifier, $(ESCAPE_NONE(JOBID)))
-- Populate this however it needs to be done
, @myguid uniqueidentifier = newid()
1条答案
按热度按时间ntjbwcob1#
sql代理作业不允许将值传入作业步骤。
但是,您可以重新考虑当前如何调用ssis包来实现您的目标。
如果在sql代理作业中添加了一个前体步骤呢?sql任务的类型,并使用该类型生成希望包共享的guid。将其存储到一个单行表中,或创建一个键/值样式的历史表。
有4列。第一个是SQLServer代理示例生成的guid。第二列是跟踪guid。
第0步看起来像
ssis的作业步骤将发生一些变化。不使用本机ssis jobstep类型,而是使用tsql类型并执行类似操作。
最后,在收集度量时,您可能还需要考虑将作业运行链接到包在ssisdb中收集的数据。您可以通过将jobid/runid记录到一个bigint of execution\u id来弥补这个差距
ServerExecutionID
. 我在每个包的第一步都使用executesql任务来完成这个任务。在从vs运行的包中,值为0。否则,它就是您在ssisdb.catalog.operations中看到的值了解这三件事将允许您查看代理作业的工作方式、将其与自定义guid关联以及收集的任何度量,并且您可以从ssis目录中提取性能数据。https://dba.stackexchange.com/questions/13347/get-job-id-or-job-name-from-within-executing-jobhttpshttp://dba.stackexchange.com/questions/38808/relating-executioninstanceguid-to-the-ssisdb