SQL Server:如何使事务提交失败?

时间:2019-05-22 19:14:45

标签: sql-server odbc commit

为了测试应用程序中的错误处理,我正在寻找一种使事务提交导致错误的方法。

应用程序用C编写,并使用ODBC与SQL Server 2017数据源对话。该应用程序启动数据库事务并执行任意SQL(为了测试我可以更改它)。然后,它提交事务(使用ODBC SQLEndTran())。我想构建一个测试来验证提交的错误处理。

是否有一种简单而可靠的方法来使提交失败,例如通过在提交之前执行某些特定的SQL脚本,或者通过更改数据库或数据源设置?

编辑/说明:我需要失败的是事务提交本身(特别是发生错误的SQLEndTran()完整调用)。之前的SQL将成功完成。

2 个答案:

答案 0 :(得分:0)

最简单的方法是强制除以零。

declare @SomeVal int = 0
set @SomeVal = 2 / @SomeVal

-编辑-

由于我想您希望提交失败,因此您只需在提交之前添加回滚即可。然后,异常将被提交到commit语句。

答案 1 :(得分:0)

如果您能够在测试框架中正确计时,则可以执行以下操作:
1.从测试框架中的单独连接中终止会话。
2.更改防火墙配置以模拟网络错误。
3.将数据库切换到单用户模式或停止SQL Service。