Предотвратить оператор T-SQL от принятия транзакции, запущенной приложением - PullRequest
1 голос
/ 22 февраля 2010

Я пишу программу, которая использует SqlCommand ADO.NET для выполнения ряда предоставленных пользователем пакетов операторов T-SQL.

Мое приложение открывает транзакцию, в которой выполняются все операторы, чтобы гарантировать, что если при выполнении возникнет ошибка, весь лот будет откатан.

Проблема, с которой я столкнулся, состоит в том, что неправильно помещенный COMMIT (без соответствующего BEGIN TRAN) в пользователе при условии, что SQL совершит мою важную транзакцию и не сможет откатиться.

Есть ли у кого-нибудь идеи, как я могу помешать пользователю SQL связываться с моей транзакцией, но все же разрешить ему НАЧАТЬ / COMMIT / ROLLBACK собственные вложенные транзакции?

Ответы [ 3 ]

5 голосов
/ 22 февраля 2010

Пользовательский SQL должен быть исправлен - если в нем неправильно размещены COMMIT (или ROLLBACKs), то я бы классифицировал его как ошибку, которую необходимо исправить.Я не знаю много о специфике вашего сценария, но я думаю, что это действительно то, что вам нужно сделать.Если вы обнаружите, что пытаетесь применить обходной путь, именно тогда должны прозвенеть сигнальные колокола, поскольку это просто усложнит / усложнит систему.

1 голос
/ 22 февраля 2010

Вы можете подключить SqlCommand к распределенной транзакции . Они не могут быть зафиксированы с помощью оператора COMMIT в базе данных. См. Метод EnlistDistributedTransaction объекта Connection.

Распределенные транзакции вводят совершенно новый класс проблем производительности и надежности. Если вы можете исправить пакеты T-SQL, как предлагает AdaTheDev, это было бы намного лучшим вариантом.

1 голос
/ 22 февраля 2010

Не могли бы вы программно проверить каждую статистику T-SQL, которая загружается в SqlCommand, на слово COMMIT, чтобы вы могли затем отметить потенциальные проблемы с запуском этого T-SQL.смотреть вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...