Timeout expired. The timeout period elapsed...or the server not responding. Таймаут в конфиге час, почему падает через минуту?
В БД во временные таблицы вставляются данные, процесс парсит данные, вставляет их в БД, удаляет дубликаты и из временных таблиц перемещает в основные в рамках одной БД, занимает около 30 минут, в итоге получается примерно 10 000 000 строк за пол часа в конечных таблицах.
Проблема в mssql server, в процессе обработки и после всего процесса, он начинает выжирать ресурсы(диск, память и немного ЦП(оценки на глаз)), предположительно начинает создавать статистики во временных таблицах, попытки отключить такое поведение не помогли (статистики все равно появляются), плюс пишет огромный лог.
Иногда он вообще падает с таймаутом через минуту-две, хотя в конфиге для строки подключения и выполнения команды указанно 3600 секунд.
Подскажите как можно настроить сервер или что-то оптимизировать? Готов выслушать любые варианты. Для вставки данных используется SqlBulkCopy.
Дмитрий Ковальский: скрипт не покажу, его нету на том уровне, что я использую, копирование данных в БД. Использую .net SqlBulkCopy.WtiteToServer() из одной таблицы БД в другую таблицу той же БД без преобразований, по 8000 строк за раз.
Пробовал сделать такой скрипт:
WITH {cteTableName} AS (
SELECT {selectedColumns}, ROW_NUMBER() OVER(PARTITION BY {uniqueColumnName} ORDER BY {uniqueColumnName}) AS RowNumber
FROM {source})
INSERT INTO {target}({selectedColumns})
SELECT {selectedColumns}
FROM {cteTableName}
WHERE RowNumber = 1;
(без индекса) это падает по таймауту и выглядит так, будто сервер просто не доступен/не отвечает/занят своими внутренними делами, т.к. 3600 секунд есть на подключение и на выполнение команды, а падает через минуту или 2 и рандомно на разных шагах выполнение
Алексей Немиро:
1) про модель восстановления знаю, отправил заказчику запрос
2) спасибо за инфу про shrink, подумаю как это использовать
3) так же знаю, что SQL server создает статистику в таблицах, как это отключить для конкретной таблицы (пробовал но не получилось, может есть какие-то особенности или еще что-то, что пропустил)
4) что еще может заставить сервер тупить, если я делаю только bulk insert, create index и delete?