Sql server 事务调用另一个数据库的存储过程
关于这个问题: 我正在通过BizTalk调用存储过程。因为BizTalk正在创建事务,所以我的存储过程没有事务处理。但是,我必须在BizTalk调用的存储过程中调用另一个存储过程。但是对同一MSSQL实例中的另一个数据库调用第二个存储过程 MS SQL是否知道此跨数据库过程调用,并对第二个存储过程进行回滚 如果:Sql server 事务调用另一个数据库的存储过程,sql-server,stored-procedures,transactions,sql-server-2014,biztalk,Sql Server,Stored Procedures,Transactions,Sql Server 2014,Biztalk,关于这个问题: 我正在通过BizTalk调用存储过程。因为BizTalk正在创建事务,所以我的存储过程没有事务处理。但是,我必须在BizTalk调用的存储过程中调用另一个存储过程。但是对同一MSSQL实例中的另一个数据库调用第二个存储过程 MS SQL是否知道此跨数据库过程调用,并对第二个存储过程进行回滚 如果: 交叉数据库存储过程失败 调用cross db存储过程后,外部存储过程失败 如果您正在使用WCF自定义,例如使用sqlBinding,则可以在WCF适配器配置中指定事务隔离级别。当然,
- 交叉数据库存储过程失败
- 调用cross db存储过程后,外部存储过程失败
事务隔离级别。当然,您可以将其设置为所需的状态
仅供参考:默认情况下,BizTalk server中的此设置是可序列化的隔离级别
事实上,在使用事务时,您的WCF适配器将启动分布式事务,并固有地支持跨数据库甚至跨服务器的事务。这取决于您在SQL中的具体操作,可能受支持,也可能不受支持。例如,一些通过特定提供商链接的有限服务器不支持它
另一个例子是,在SQL Server 2016之前(包括2016年),AlwaysOn可用性组中的跨数据库事务不受支持。(说明:)
据说,这(AlwaysOn AG的跨数据库事务)将从SQL Server 2017开始得到支持
TLDR代码>如果您使用的是分布式事务,并且没有使用传统链接服务器提供程序或AlwaysOn可用性组之类的非常规设置,则支持此设置并按预期工作。transactionIsolationLevel设置不是仅在接收位置可用,并且仅通过添加sqlAdapterInboundTransactionBehavior行为?正确,对于唯一可用的接收位置,包括“环境事务”的设置。我确信这是关于发送端口的,因此我没有提到这一点,所以提出了非常好的观点!很好的解释。因此,我们有了SQL Server 2014和AlwaysOn。所以我的跨数据库过程不支持事务,对吗?@Mario我以前没有测试过,但根据我阅读的文档,它们不支持。这是一个很好的解释