示例代码:
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)不允许我禁用该部分。