У меня есть приложение C #, которое выполняет процесс ETL.Для таблицы с самоссылкой приложение будет запускать «ALTER TABLE [tableName] NOCHECK CONSTRAINT [constraintName]», которое отключает любую проверку ограничений FK для этой таблицы.Как только все данные загружены, ограничения снова активируются.
Тайм-аут базы данных установлен на 3 минуты, однако приведенная выше команда SQL не будет выполнена из-за истечения времени ожидания базы данных через 30 секунд.
В чем может быть причина этого тайм-аута?
Существуют ли системные таблицы базы данных, которые я должен проверить на ненормальность?
Другая информация: я проверил приложение, в нем только один активныйпоток делает ETL, поэтому я не думаю, что приложение блокирует какой-либо ресурс базы данных.Кроме того, база данных работает на том же компьютере, что и приложение.
Если приложение закроет все свои подключения к базе данных, оно снова остановится, если запустит процесс ETL в следующий раз.Если я запускаю sql вручную с помощью SQL Manager Studio, у него не возникает никаких проблем.
Спасибо
ОБНОВЛЕНИЕ - Приложение отключает ряд ограничений.Оказывается, тайм-аут происходит только с 1 конкретным ограничением.Это ограничение ссылается на таблицу «Измерение даты».
ОБНОВЛЕНИЕ - Похоже, что в тестовой базе данных, над которой я работал, есть какая-то странная ненормальность.Я попробовал тот же самый процесс ETL с другим хранилищем данных, и у него пока нет проблем.Другие разработчики в команде также не сталкивались с этой проблемой.Это приложение работает каждую полночь.Я буду продолжать работать в течение ночи и, надеюсь, смогу воспроизвести ту же проблему в других базах данных.Пока не повезло в выяснении того, что происходит.