为了测试应用程序中的错误处理,我正在寻找一种使事务提交导致错误的方法。
应用程序用C编写,并使用ODBC与SQL Server 2017数据源对话。该应用程序启动数据库事务并执行任意SQL(为了测试我可以更改它)。然后,它提交事务(使用ODBC SQLEndTran()
)。我想构建一个测试来验证提交的错误处理。
是否有一种简单而可靠的方法来使提交失败,例如通过在提交之前执行某些特定的SQL脚本,或者通过更改数据库或数据源设置?
编辑/说明:我需要失败的是事务提交本身(特别是发生错误的SQLEndTran()
完整调用)。之前的SQL将成功完成。
答案 0 :(得分:0)
最简单的方法是强制除以零。
declare @SomeVal int = 0
set @SomeVal = 2 / @SomeVal
-编辑-
由于我想您希望提交失败,因此您只需在提交之前添加回滚即可。然后,异常将被提交到commit语句。
答案 1 :(得分:0)
如果您能够在测试框架中正确计时,则可以执行以下操作:
1.从测试框架中的单独连接中终止会话。
2.更改防火墙配置以模拟网络错误。
3.将数据库切换到单用户模式或停止SQL Service。