Since there are 3 SQL statements involved, the first thing I would do is try to find out which one of the 3 statements is taking longer to execute.
Are there any indexes available ? Have you seen the execution plan of these statements to see if those indexes are in fact being used ?
At first sight, it seems that the 2 updates are pretty similar. Is it not possible to update the 2 fields in just one update ?
substring(convert(char(7),sa.jbadsd),4,4) = substring(convert(char(7),@jbadsd),4,4)
and substring(convert(char(7),sa.jbadsd),2,2) = ’07’)
Is never going to run fast. This section is forcing either an index scan or a table scan no matter what.
Can you save the XML for the execution plan and post it so we can see what it actually happening.
I would assume that you are missing indexes or that the indexes do not have the columns in the correct order.