Pra*_*pta 4 sql vb.net sql-server sql-server-2012
我正在开发一个用VB.NET构建的Windows桌面应用程序,它与基于Web的数据库(Microsoft SQL Server 2012)连接.它在需要时连接到数据库并在本地执行一些计算.现在,有一个新的要求从这个Windows应用程序执行一个sproc.我需要知道,当我调用SqlCommand.ExecuteNonQuery时,SqlCommand是立即释放还是等待直到sproc完成所有工作?我现在无法测试,因为存储过程尚未设计,并且至少需要2分钟才能完成.我在一个单独的线程上运行SqlCommand.ExecuteNonQuery而不是UI.
如果SqlCommand没有立即释放,则会产生以下问题:1.如果用户在完成之前退出应用程序,那么sproc完成是否有效?2.如果发生超时,sproc完成是否有效?
对不起,如果我的疑问是基本的,我是新手.
是的,ExecuteNonQuery将等待SP完成或错误.
如果从另一个线程运行ExecuteNonQuery,则只有该线程在等待.其他线程不是这样,用户可以关闭应用程序.如果你在关闭之前清理线程,就像你应该的那样,它将向SP发送取消.(这并不意味着它实际上会取消.如果它几乎完成,它可能会完成.)然后会发生什么事情取决于您的SQL开发人员.如果他们在事务中运行SP,他们应该回滚更改并返回错误.如果没有,请找一位新的SQL开发人员.
| 归档时间: |
|
| 查看次数: |
4413 次 |
| 最近记录: |