Run SQL job by a non-Sysadmin user.
Jobs which run for a specific application should be executed by an account of that application. This will probably be a function account. The following steps should be taken in order to let a non-SysAdmin execute a job.
1. Open the Management Studio and connect to the database instance your job is running on.
2. Select the “Properties” of you Job.

3. In the Owner field fill in you application’s User which should run this SQL Server Agent Job.

4. In order to let this account (App_Functional_User) see its own job he has to be a member of the fixed Database role “SQLAgentUserRole”. This role can be found using the Object explorer at path: Databases/System Databases/msdb/Security/Roles/Database Roles

A full description of the “SQLAgent..” roles can be found at.
http://msdn2.microsoft.com/en-us/library/ms188283.aspx
5. Select “Properties” of the “SQLAgentUserRole” and use the “Add” button to add the function user to this Database role.
By adding the account to this Database role it will see the “SQL Server Agent” node in the Object explorer with all the jobs the account is Owner of. It also has gotten execute rights to start / stop only these jobs where its the owner of.