The difficult part is to avoid Deadlocks.
Step 1) Create a table that will be used to store tasks with a timestamp column to indicate if the task has been started: tbl_AUFTRAG (id, start_date)
It is important to add a clustered index on the id column to get the right locking behavior.
Step 2) Create an integration service package and add SQL Tasks with the following code to act as workers that consume jobs from the job table:
while Exists (Select 1 from tbl_AUFTRAG with (readpast) where start_date is null)
declare @id varchar(36)
set @id = (select top 1 id from tbl_AUFTRAG with (xlock, readpast) where start_date is null) //to get an xlock that is kept till the end
update tbl_AUFTRAG set start_date = getdate() where id = @id
EXEC storedprocedure -- Do the actual work here. Pass parameters from the tbl_Auftrag –job table.