事务生存期

适用范围:SQL Server

在 Transact-SQL 存储过程中启动的事务与托管代码中启动的事务之间存在重要区别:公共语言运行时 (CLR) 代码无法在 CLR 调用的入口或退出时使事务状态不平衡。 注意此区别的以下含义:

  • 必须在 CLR 帧内启动的事务提交或回滚,否则 SQL Server 在退出帧时会生成错误。

  • 在 CLR 代码内不能提交或回滚外部事务。

  • 尝试提交不在同一过程中启动的事务将导致运行时错误。

  • 尝试回滚在同一过程中未启动的事务会导致事务停止响应(防止发生任何其他副作用操作)。 事务将断开连接,直到 CLR 代码离开作用域。 请注意当您在过程内检测到错误并想确保终止整个事务时,这可能很有用。

另请参阅

CLR 集成和事务