Отладка с помощью старого сценария хранимых процедур SQL на основе рекурсии

#sql #debugging #stored-procedures

Вопрос:

По какой-то причине у этого скрипта происходит массовая утечка оперативной памяти. Я не могу на самом деле отлаживать сценарий, потому что по какой-то причине он использует все пространство оперативной памяти моей системы и не очищает себя от используемой памяти даже после использования различных хранимых процедур.

Кроме того, я отлаживал все, что мог, и заметил, что даже простые функции удаления используют и никогда не выпускают до 20-100 МБ на функцию удаления.

 delete
    t2
from
    MsSubSpecArchiveToDeleteWS TMP
inner join 
    MsWorkSectionSpecVersion t1 on TMP.MsWorkSectionSpecGUID = t1.MsWorkSectionSpecGUID
inner join 
    MsSubSpecVersionMsWorkSectionSpecVersion t2 on t1.MsWorkSectionSpecVersionGUID = t2.MsWorkSectionSpecVersionGUID    
 

Приведенная выше функция, например, выполняется несколько сотен раз рекурсивно на протяжении всего сценария (простое удаление) и каждый раз занимает 20-100 МБ оперативной памяти. Это очень быстро накапливается, и вся хранимая процедура при каждом запуске занимает 2 ГБ оперативной памяти и быстро приводит к сбою моей системы, когда у сценария в конечном итоге заканчивается память.

Вся система очень старая (построена в 2012 году, сокращена и отредактирована очень по-разному за последние 9 лет).

Я отлаживаю в Visual Studio, и мне интересно, есть ли способ увидеть, что именно вызывает эти утечки памяти, и, надеюсь, подключить их.