У меня есть CTE, который выполняет некоторую рекурсию. Самый простой способ представить проблемное пространство - это резистор, который используется в автомобилях по всему миру, и у вас есть вся эта информация. Резистор A используется в платах B и C, который используется в DashAssembly D, E, F ... ZZ, который используется в автомобилях AAA, AAB и AAC.
Я получил CTE, работающий с одной частью, проверил результаты, все хорошо (используя MAXRECURSION 100). Затем я добавляю часть, которая немного более распространена в деревьях деталей. Бум сломан. Я попытался поднять MAXRECURSION до 32767, и он все еще сломался. Глядя на данные, эта конкретная часть используется повсеместно. На втором уровне рекурсии у него 426 родителей. И так далее, я думаю, 6 уровней рекурсии. Это имеет смысл (я думаю), что это взрыв MAXRECURSION.
Следующий вопрос: каков план Б? Я никогда не делал рекурсии, в которых не использовались бы CTE.
Обновление : ответ таков: убедитесь, что у вас нет циклических ссылок, и убедитесь, что ваша таблица рекурсии правильно фильтрует свое соединение (я не выполнил второе правильно). По сути, я обманывала и думала, что моя проблема заключалась в моих безумных диких данных, тогда как вместо этого были мои дурацкие навыки sql.