防止T-SQL语句提交应用程序启动事务

rnw*_*ood 1 c# t-sql sql-server ado.net

我正在编写一个程序,它使用ADO.NET的SqlCommand来执行许多用户提供的批量T-SQL语句.

我的应用程序打开一个事务,其中执行所有语句以确保如果执行任何错误,则回滚整个批次.

我遇到的问题是,在用户提供的SQL中,错误放置的COMMIT(没有匹配的BEGIN TRAN)将提交我的所有重要事务并让我无法回滚.

有没有人有任何想法如何阻止用户的SQL搞乱我的事务,但仍允许他们BEGIN/COMMIT/ROLLBACK他们自己的嵌套事务?

Ada*_*Dev 5

用户的SQL需要更正 - 如果它放置了错误的COMMIT(或ROLLBACK),那么我将其归类为需要修复的bug.我不太了解你的场景的具体细节,但我认为这正是你需要做的.如果你发现自己试图实现一种解决方法,那就是警报应该响起,因为它只会使系统更复杂/更难维护.