获取作业的执行结果历史记录

本文介绍了一个简易的作业监控工具,该工具通过定时检查服务器上特定作业的日志文件,并在作业出现错误时向预设邮箱发送通知邮件。使用SQL查询从历史记录中筛选出失败、取消及重试状态的作业。

做了一个作业简单的监控工具,实现对几个服务器的作业进行监控,当作业执行错误时,即时发送邮件到几个指定的邮箱,主要是用timer循环查获作业的历史日志记录。

SELECT   [JobName]   = JOB.name, [Step]      = HIST.step_id,  [StepName]  = HIST.step_name, [Message]   = HIST.message, [Status]    = CASE WHEN HIST.run_status = 0 THEN 'Failed' WHEN HIST.run_status = 1 THEN 'Succeeded' WHEN HIST.run_status = 2 THEN 'Retry'  WHEN HIST.run_status = 3 THEN 'Canceled'  END,  [RunDate]   = HIST.run_date, [RunTime]   = HIST.run_time,  [Duration]  = HIST.run_duration  FROM        sysjobs JOB  INNER JOIN  sysjobhistory HIST ON HIST.job_id = JOB.job_id  WHERE HIST.run_date>=CONVERT(CHAR(8),GETDATE()-1,112) AND HIST.run_status<>1 

and    JOB.name = 'jobnamemodel' and HIST.run_date='rundatemodel' and HIST.run_time between 'runtimemodel1' and 'runtimemodel2' ORDER BY    HIST.run_date, HIST.run_time 

<think>嗯,用户现在想了解DataStage作业运行后查看结果的方法。结合用户提供的引用内容和历史对话,我需要整合有效信息给出实用方案。 用户之前已经接触过DataStage的基础操作和常见问题,这次聚焦结果查看环节。引用中提到几个关键点:清除状态文件可解决界面显示异常[^1],命令行工具dsjob支持状态监控[^3],以及字段默认值机制可能影响结果判断[^4]。 从技术角度看,结果查看可以分为三个层面: 首先是运行状态监控,引用[^3]提供的dsjob命令特别有用,-jobstatus参数能准确捕获作业退出码(0成功/非0失败),配合Director界面日志查看更直观。这里需要强调用户提到的错误案例——如果表结构更改导致SQLFetch失败[^2],日志里会有明确报错,属于必须关注的诊断信息。 其次是数据内容验证。对于数据库目标,用户可以直接查询目标表;文件类输出则需注意字符集问题。特别要提醒引用[^4]揭示的陷阱:DS对非空字段自动填充默认值(数字0/字符空串),可能导致IsNull()判断失效。用户若发现关联记录异常,应该改用ID=0或ID=''条件过滤。 最后是特殊问题处理。比如用户遭遇过数据流状态不显示的情况,引用[^1]给出了标准解法:在Director里用Job > Clear Status File重置状态文件。这个操作相当于界面刷新,遇到显示异常时优先尝试。 考虑到用户可能深入使用,补充了三个衍生问题:日志解析技巧针对复杂排错,文件编码问题预防乱码,以及存储过程结果查看这种进阶场景。这些都属于结果查看环节的常见延伸需求。 </think>DataStage作业运行后可通过以下方法查看结果及状态,具体操作步骤如下: --- ### 一、**通过DataStage Director界面查看** 1. **实时监控作业状态** - 在Director中选中作业 → 点击 **"View Log"** - **关键信息**: - 绿色进度条:运行成功 - 红色标记:运行失败(需检查错误详情) - 灰色状态:作业未显示进度时尝试 **Job > Clear Status File** 刷新状态 [^1] 2. **检查输出数据** - **数据库表**:直接查询目标表(如Oracle/SQL Server) - **文件输出**:检查Sequential File或Dataset阶段配置的路径 > 示例:若输出到`/data/output.csv`,用文本工具或命令行查看 --- ### 二、**通过命令行工具`dsjob`监控** 1. **获取作业状态码** ```bash dsjob -jobstatus <项目名> <作业名> ``` - **返回值含义**: - `0`:成功 - `非0`:失败(需结合日志分析)[^3] - 示例: ```bash dsjob -jobstatus ETL_PROJECT JOB_LOAD_SALES ``` 2. **带等待的运行命令** ```bash dsjob -run -wait -jobstatus ETL_PROJECT JOB_TRANSFORM ``` - `-wait`:阻塞直至作业结束 - `-jobstatus`:自动返回状态码 [^3] --- ### 三、**诊断常见问题** 1. **字段值异常处理** - 若关联字段显示`0`或空字符串而非`NULL`: - 转换阶段使用 **`NullToZero()`**(数字字段)或 **`NullToEmpty()`**(字符字段)[^4] - 过滤条件改为 `ID = 0` 或 `ID = ''` 2. **表结构变更错误** - 错误提示:*"表架构发生更改,无法完成游标操作"* [^2] - **解决方法**: - 重启数据库连接 - 重新编译作业 --- ### 四、**高级调试技巧** | 方法 | 适用场景 | 操作指引 | |---------------------|-----------------------------------|-----------------------------| | **Peek Stage** | 实时查看转换中间数据 | 在Transformer后插入Peek阶段 | | **Row Generator** | 生成测试数据验证逻辑 | 替换实际输入源 | | **Data Set Viewer** | 检查Dataset格式输出 | Tools → Data Set Manager | > ⚠️ 注意:非空字段的默认值机制可能导致`IsNull()`失效,需按[^4]方案处理 --- ### 五、**结果验证流程** ```mermaid graph LR A[运行作业] --> B{状态码=0?} B -- 是 --> C[查看目标表/文件数据] B -- 否 --> D[检查Director日志] D --> E[定位错误阶段] E --> F[修正配置或逻辑] F --> A ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值