Избавьтесь от курсора - используйте решение на основе множеств.
В основном вы делаете это:
insert into stocks_reserves
(id, date_ajout, usure, suppression, edition_id)
Select id, date_ajout, usure, suppression, edition_id
from stock
where stock.id in
(
select stock_id
from location
where location.stock_id in
(
select id
from stock
where edition_id in
(
select edition_id
from reservation
where (date_fin - GETUTCDATE()) <= 12
)
)
and archivage = 0
)
Вы можете заменить IN на существующее для более быстрой обработки вставки.
Еще лучше, сделайте INNER JOIN
для наилучшей производительности.