Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 事务调用另一个数据库的存储过程_Sql Server_Stored Procedures_Transactions_Sql Server 2014_Biztalk - Fatal编程技术网

Sql server 事务调用另一个数据库的存储过程

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适配器配置中指定事务隔离级别。当然,

关于这个问题:

我正在通过BizTalk调用存储过程。因为BizTalk正在创建事务,所以我的存储过程没有事务处理。但是,我必须在BizTalk调用的存储过程中调用另一个存储过程。但是对同一MSSQL实例中的另一个数据库调用第二个存储过程

MS SQL是否知道此跨数据库过程调用,并对第二个存储过程进行回滚

如果:

  • 交叉数据库存储过程失败
  • 调用cross db存储过程后,外部存储过程失败

如果您正在使用WCF自定义,例如使用sqlBinding,则可以在WCF适配器配置中指定
事务隔离级别。当然,您可以将其设置为所需的状态

仅供参考:默认情况下,BizTalk server中的此设置是可序列化的隔离级别

事实上,在使用事务时,您的WCF适配器将启动分布式事务,并固有地支持跨数据库甚至跨服务器的事务。这取决于您在SQL中的具体操作,可能受支持,也可能不受支持。例如,一些通过特定提供商链接的有限服务器不支持它

另一个例子是,在SQL Server 2016之前(包括2016年),AlwaysOn可用性组中的跨数据库事务不受支持。(说明:) 据说,这(AlwaysOn AG的跨数据库事务)将从SQL Server 2017开始得到支持


TLDR如果您使用的是分布式事务,并且没有使用传统链接服务器提供程序或AlwaysOn可用性组之类的非常规设置,则支持此设置并按预期工作。

transactionIsolationLevel设置不是仅在接收位置可用,并且仅通过添加sqlAdapterInboundTransactionBehavior行为?正确,对于唯一可用的接收位置,包括“环境事务”的设置。我确信这是关于发送端口的,因此我没有提到这一点,所以提出了非常好的观点!很好的解释。因此,我们有了SQL Server 2014和AlwaysOn。所以我的跨数据库过程不支持事务,对吗?@Mario我以前没有测试过,但根据我阅读的文档,它们不支持。这是一个很好的解释