pentaho/pentaho-kettle · error · KettleException
Unable to load job entry of type 'MSsql bulk load' from the…
Error message
Unable to load job entry of type 'MSsql bulk load' from the repository for id_jobentry=
What it means
KettleException thrown by JobEntryMssqlBulkLoad.loadRep() when reading the 'MSsql bulk load' entry's attributes from the repository fails with a KettleDatabaseException, including loading the associated database connection metadata. It means the stored definition of this job entry cannot be fetched from the repository.
Solutions
- Inspect the wrapped KettleDatabaseException cause to find the failing SQL/query and fix the repository database.
- Recreate the missing connection in the repository so id_database resolves.
- Run repository schema upgrade/repair to restore missing attribute rows or columns.
- Recreate the job entry in the repository if its rows are corrupted.
Defensive patterns
Strategy: try-catch
Validate before calling
// before load: check connection reference exists ObjectId connId = rep.findDatabaseId( databases, dbname ); if ( connId == null ) throw new KettleException( "connection not found in repository for job entry" );
Try / catch
try { jobEntry.loadRep( rep, metaStore, idJobentry, databases, slaveServers ); } catch ( KettleException e ) { logError( "Repository load failed: " + e.getCause(), e ); } Prevention
- Never delete database connections still referenced by jobs
- Keep repository schema upgraded/repaired
- Grant read privileges on R_JOBENTRY_ATTRIBUTE to repository users
- Log the full cause chain of KettleDatabaseException
When it happens
Trigger: Loading a job from a repository when getJobEntryAttributeBoolean/Integer or loadDatabaseMetaFromJobEntryAttribute(id_jobentry, "connection", "id_database", databases) throws — missing attribute rows, broken id_database reference, or repository connection failure.
Common situations: The connection referenced by id_database was deleted from the repository; R schema out of sync; repository read permissions restricted; corrupted attribute rows after a partial save.
Understand the failure class
Background: Database query failed: Internal Server Error 500s wrapping SQL, Prisma, and connection failures — what to check first — this error's family across 16 libraries.
Related errors
- Unable to load job entry of type 'MSsql Bulk Load' to the…
- JobEntryCheckFilesLocked.UnableToLoadFromRepo
- JobEntryCheckFilesLocked.UnableToSaveToRepo
- JobEntryColumnsExist.Meta.UnableLoadRep
- JobEntryColumnsExist.Meta.UnableSaveRep
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/c01f59e4984528df.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/job/entries/mssqlbulkload/JobEntryMssqlBulkLoad.java:254
startfile = (int) rep.getJobEntryAttributeInteger( id_jobentry, "startfile" );
endfile = (int) rep.getJobEntryAttributeInteger( id_jobentry, "endfile" );
orderby = rep.getJobEntryAttributeString( id_jobentry, "orderby" );
orderdirection = rep.getJobEntryAttributeString( id_jobentry, "orderdirection" );
errorfilename = rep.getJobEntryAttributeString( id_jobentry, "errorfilename" );
maxerrors = (int) rep.getJobEntryAttributeInteger( id_jobentry, "maxerrors" );
batchsize = (int) rep.getJobEntryAttributeInteger( id_jobentry, "batchsize" );
rowsperbatch = (int) rep.getJobEntryAttributeInteger( id_jobentry, "rowsperbatch" );
adddatetime = rep.getJobEntryAttributeBoolean( id_jobentry, "adddatetime" );
addfiletoresult = rep.getJobEntryAttributeBoolean( id_jobentry, "addfiletoresult" );
truncate = rep.getJobEntryAttributeBoolean( id_jobentry, "truncate" );
connection = rep.loadDatabaseMetaFromJobEntryAttribute( id_jobentry, "connection", "id_database", databases );
} catch ( KettleDatabaseException dbe ) {
throw new KettleException(
"Unable to load job entry of type 'MSsql bulk load' from the repository for id_jobentry=" + id_jobentry,
dbe );
}
}
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {
try {
rep.saveJobEntryAttribute( id_job, getObjectId(), "schemaname", schemaname );
rep.saveJobEntryAttribute( id_job, getObjectId(), "tablename", tablename );
rep.saveJobEntryAttribute( id_job, getObjectId(), "filename", filename );
rep.saveJobEntryAttribute( id_job, getObjectId(), "datafiletype", datafiletype );
rep.saveJobEntryAttribute( id_job, getObjectId(), "fieldterminator", fieldterminator );
rep.saveJobEntryAttribute( id_job, getObjectId(), "lineterminated", lineterminated );
rep.saveJobEntryAttribute( id_job, getObjectId(), "codepage", codepage );
rep.saveJobEntryAttribute( id_job, getObjectId(), "specificcodepage", specificcodepage );
rep.saveJobEntryAttribute( id_job, getObjectId(), "formatfilename", formatfilename );
rep.saveJobEntryAttribute( id_job, getObjectId(), "firetriggers", firetriggers );
rep.saveJobEntryAttribute( id_job, getObjectId(), "checkconstraints", checkconstraints );View on GitHub (pinned to f3058517a1)