sql server定时作业调用Kettle job出错的快速解决方法

1. 问题表述

在使用SQL Server定时作业调用Kettle Job时,可能会遇到调用失败的情况。其中一种常见的错误是:“Error: Could not find or load main class org.pentaho.di.job.Job”。这种问题的出现,会导致Job不能被正常执行,影响到应用程序的正常运行。

2. 解决方案

在SQL Server中,有两种方式可以调用Kettle Job,分别是使用.NET CLR和使用JVM。在使用JVM方式时,需要配置Java环境,否则就会出现无法加载Job的问题。

2.1 配置Java环境

首先,需要在SQL Server所在的服务器上安装Java。如果已经安装了Java,可以通过以下命令确认Java的安装路径:

java -version

得到Java的安装路径后,需要在SQL Server中配置Java的环境变量。具体步骤如下:

1. 打开SQL Server Management Studio,选择需要配置Java环境的实例。

2. 在“对象资源管理器”中,右键单击该实例,选择“属性”。

3. 在“属性”对话框中,选择“高级”选项卡,找到“环境变量”栏目,点击“编辑”按钮。

4. 在“环境变量”对话框中,查找“Path”变量,点击“编辑”按钮。

5. 在“编辑环境变量”对话框中,将Java的安装路径添加到列表中,确认修改并退出对话框。

2.2 设置Java虚拟机路径

在SQL Server 2016中,可以通过以下命令来设置Java虚拟机路径:

EXEC sp_configure 'show advanced options', 1;  

GO

RECONFIGURE;

GO

EXEC sp_configure 'max server memory (MB)', 1024;

GO

RECONFIGURE;

GO

EXEC sp_configure 'external scripts enabled', 1;

GO

RECONFIGURE;

GO

EXEC sp_configure 'java config', 'C:\\Program Files\\Java\\jdk1.8.0_181\\bin\\java.exe';

GO

RECONFIGURE;

GO

EXEC sp_configure 'java memory', 1024;

GO

RECONFIGURE;

GO

需要注意的是,在执行该命令时,需要将其中的Java虚拟机路径修改为实际的值。

2.3 配置Job的路径

在创建SQL Server定时作业时,需要设置Job的路径。可以通过以下命令设置路径:

EXEC sp_add_jobstep  

@job_name = 'JobTest',

@step_name = 'RunJob',

@subsystem = 'CMDEXEC',

@command = 'C:\\Pentaho\\data-integration\\Kitchen.bat /file:"C:\\Pentaho\\job1.kjb"',

@on_success_action = 1,

@on_fail_action = 2;

需要注意的是,在执行该命令时,需要将其中的Job路径修改为实际的值。

3. 实测结果

在完成上述配置之后,重新启动SQL Server服务并尝试运行作业,可以发现这个问题已经被解决了,Job能够正常执行,应用程序也能够正常运行。

4. 总结与思考

通过对本文所述的解决方案的实施,我们可以解决由于Java环境配置不正确而导致的Job加载失败的问题。同时,本文的解决方案也为我们提供了一种在SQL Server中使用Kettle Job的方法,为我们的工作带来了很大的便利。

数据库标签