«Время ожидания операции истекло» после 120 секунд вызова CREATE INDEX из метода SMO TransferData - PullRequest
2 голосов
/ 03 июля 2019

Недавно создал инструмент C #, использующий класс SMO для автоматизации рефакторинга и слияния баз данных SQL Server для миграции в Azure.

Метод TransferData успешно придерживается BulkCopyTimeout для фазы копирования данных;подтвердил это, расширив его по истечении времени ожидания.

Когда фаза передачи переходит к операторам CREATE INDEX, они, по-видимому, достигают тайм-аута через 120 секунд / 2 минуты для особенно большой таблицы.

Объект ServerConnectionимеет StatementTimeout и ConnectionTimeout, оба установлены в 0 (как первоначальное исследование предложило сделать) безрезультатно.

Запуск трассировки профилировщика, я заметил, что «Имя приложения» отличается от исходного набора (MergeDB v1.8), когдаФазы массового копирования и создания индекса запущены.

Исходное соединение все еще присутствует, но кажется, что класс Transfer порождает дополнительные соединения (но, по-видимому, передает BulkCopyTimeout; не может передать имя приложения и (моя гипотеза) свойство StatementTimeout.

Я использую SMO v150.18131.0 для подключения к SQL 2008 R2.

enter image description hereenter image description here

...