更改尝试启动分布式事务的过程

时间:2019-02-08 21:29:18

标签: sql-server

示例代码:

SET TRANSACTION ISOLATION LEVEL Serializable
go
begin transaction
go
alter procedure abc 
as
begin
select top 10 * from database2.dbname.dbo.dbtable
end
commit transaction

我收到了错误:

  

已返回链接服务器“ database2”的OLE DB访问接口“ SQLNCLI11”   消息“事务管理器已禁用其对   远程/网络事务。”。

     

MSG 7391,级别16,状态2,过程abc,第4行[批量开始行   4]由于OLE DB提供程序无法执行该操作   链接服务器“ database2”的“ SQLNCLI11”无法启动   分布式交易。

我正在Azure托管实例上运行,但是我怀疑在禁用MSDTC的任何时候都会发生这种情况。

这是较大的部署脚本的一部分,因此需要将部署包装在事务中。有没有办法防止此错误?还是我必须生活而不必将所有事务都包装在交易中?

请注意,将隔离级别保留为READ COMMITTED不会导致此问题,但是我的部署引擎(SQL Compare)不允许我禁用该部分。

0 个答案:

没有答案