Недавно создал инструмент 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.