I was editing some pre-existing SQL Server Agent jobs the other day, adding some interconnectivity and changing steps around as I’ve done hundreds of times before. These job steps are used to execute SSIS packages (SQL Server Integration Services) on the server and have been running for months (years?) without fail. However, after I made my changes they started failing on the steps I had edited, throwing the bizarre error:
Option "/CALLERINFO" is not valid. The command line parameters are invalid.
After some frantic Googling and some initial confusion, I twigged on the fact that all changes I’d made had been done, crucially, from my desktop, which is currently running the new 2012 (“Denali”) version of SSMS (SQL Server Management Studio). As it turns out, there’s a bug in the RC0 release of SQL Server 2012 that adds the CALLERINFO command line parameter (which doesn’t seem to be documented on MSDN) to any SQL Server Job Agent steps that execute SSIS packages, even if the target instance of SQL Server is a previous version. “What’s the issue there?”, I hear you cry. Well, the CALLERINFO parameter is a new addition to SQL Server 2012 and is not known by older versions (we’re running SQL Server 2008 R2 on the target machine). The good news is, that Microsoft are aware of the issue and have fixed it for the RTM version.
Until then though, there is a workaround. Edit your SQL Agent job step, choose the “Command line” tab and click “Edit the command line manually”. Then just remove the
/CALLERINFO SQLAGENT parameter from the command line arguments.
UPDATE: It seems that in the final release of SQL Server 2012, the SQL Job Agent “Command line” tab is no longer present. To get around this, you can simply browse to the relevant job in your SSMS Object Explorer, and script the job. This allows you to modify the “@command” parameter, just as you would have done previously via the GUI.