Я считаю, что ваш вопрос «Как перехватить ошибку Script Timeout и записать ее в базу данных». Тогда ответом будет то, что вы не можете сделать это при возобновлении после ошибки далее.
Проблема в том, что ASP определил, что ваш скрипт слишком долго работал. Чтобы ваш код перехватывал и записывал ошибку, ваш код должен продолжаться, но это именно то, что, по определению ASP, не должно происходить, поскольку время истекло.
Кроме того, в общем случае, если вы не можете продолжать делать что-то разумное (и это не включает ведение журнала) в вашем сценарии, нет смысла пытаться использовать On Error Resume Next, чтобы перехватить ошибку.
Вместо этого создайте новый сценарий ASP, который должен запускаться всякий раз, когда вы получаете ошибку сценария (это будет включать в себя ошибку времени ожидания сценария). В диспетчере IIS откройте диалоговое окно свойств приложений и выберите вкладку «Пользовательские ошибки». Отредактируйте обработчик для ошибки HTTP 500; 100 и измените его на URL и путь этого сценария ASP.
Теперь вы можете поместить свой код регистрации ошибок в этот скрипт ASP. Вы можете получить доступ к ошибке, выдаваемой сбойной страницей ASP, с помощью метода Server.GetLastError. Вы также можете настроить эту страницу, чтобы отправить что-то дружественное пользователю.