Я работаю над проектом на VB.net, который берет большие текстовые файлы, содержащие T-SQL, и выполняет их для локальной базы данных SQL, но я столкнулся с проблемой в отношении обработки ошибок.
Я использую следующие технологии:
- 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, но я не могу найти способ обработать ошибку, а затем продолжить обработку других операторов.
Кажется, что Query Analyzer ведет себя так, но не при использовании sqlCommand.ExecuteNonQuery ().
Так есть ли T-SQL-эквивалент "Resume Next" или какой-то другой способ, которым я могу сделать это без большого количества обработок строк с моей стороны?
Любая помощь с благодарностью.