Я работаю над проектом в VB.net, который принимает большие текстовые файлы, содержащие T-SQL, и выполняет их в локальной базе данных SQL, но я столкнулся с проблемой в отношении ошибки обработки.SQL Server 'Resume Next' Equivalent
Я использую следующие технологии:
- VB.net
- Framework 3.5
- SQL Express 2005
SQL, я пытаюсь выполнить в основном неразветвленной но мое приложение полностью не осознает схему или данные, содержащиеся внутри. Например:
UPDATE mytable SET mycol2='data' WHERE mycol1=1
INSERT INTO mytable (mycol1, mycol2) VALUES (1,'data')
UPDATE mytable SET mycol2='data' WHERE mycol1=2
INSERT INTO mytable (mycol1, mycol2) VALUES (1,'data')
UPDATE mytable SET mycol2='data' WHERE mycol1=3
Выше приведен образец рода вещи я совершающие, но эти файлы будут содержать около 10 000 до 20 000 заявлений каждого.
Моя проблема в том, что при использовании sqlCommand.ExecuteNonQuery() я получаю исключение, потому что второй оператор INSERT попадает в ограничение первичного ключа в таблице.
Мне нужно знать, что эта ошибка произошла и зарегистрировать ее, но также обрабатывать любые последующие утверждения. Я попробовал обернуть эти инструкции в блоках TRY/CATCH, но я не могу разработать способ обработки ошибки, а затем продолжить обработку других операторов.
Анализатор запросов, похоже, ведет себя таким образом, но не при использовании sqlCommand.ExecuteNonQuery().
Итак, есть ли эквивалент T-SQL «Resume Next» или каким-либо другим способом, я могу сделать это, не вводя огромное количество обработки строк с моей стороны?
Любая помощь очень ценится.
Настройка FireInfoMessageEventOnUserError была невероятно полезна для оптимизации производительности. Вместо того, чтобы обрабатывать 1000+ sqlExceptions, это гораздо более быстрый способ справиться с вещами и именно тем, что я искал! –