Я пишу код, который импортирует большое количество данных в три таблицы, в настоящее время около 6 миллионов строк в трех таблицах. Я хочу сделать это в транзакции, поэтому, если есть какие-либо проблемы или пользователь отменяет импорт, импорт ничего не импортируется. Это отлично работает на моей машине развития, однако на более медленной Amazon EC2 экземпляра и микро SQL, например я получаю следующее исключение:System.Data.SqlClient.SqlException: Timeout expired on commit
System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding
Теперь я знаю, что коммит заканчивает в конце концов, потому что данные присутствуют в таблицах когда я смотрю, так мой вопрос; можно ли это легко избежать, не добавляя свойство тайм-аута соединения к моей строке соединения (я хочу, чтобы эта одна операция не была таймаутом), или это действительно тяжелая/опасная вещь? Я не уверен, может быть, мне нужно импортировать в холдинг таблицы, а затем вызвать хранимые процедуры для перемещения данных, когда я буду готов, потому что я предполагаю, что это приведет к более короткой транзакции)
Я использую сервер Ms Sql 2012. Прокомментируйте, если мне нужно добавить дополнительные данные. Большое спасибо за помощь.
Я не совсем понимаю, что вы здесь говорите, хранимые процедуры и запросы, чтобы получить данные в таблицы не синхронизируются, и указанное выше исключение возникает, когда я вызываю метод commit в объекте транзакции. – user2647347