来自本地 SQL 服务器的 Azure 链接 SQL 服务器 - MSDTC 异常

Azure Linked SQL server from on Premise SQL Server - MSDTC exception

  1. 我在 Azure 中有一个 SQL 数据库
  2. 然后从本地 SQL Server
  3. 为 SQL Db 创建了一个链接服务器
  4. 我正在使用 Azure SQL 本地 SP 中的 table 数据库 SQL 数据库

此设置工作正常,除非 MSDTC 服务处于 运行ning 状态。

当 'DTC' 服务为 运行ning 时,出现以下异常

Top level exception message : System.ServiceModel.FaultException: The OLE DB provider "SQLNCLI11" for linked server "Azure_SQLDb" reported an error. One or more arguments were reported invalid by the provider. The operation could not be performed because OLE DB provider "SQLNCLI11" for linked server "Azure_SQLDb" was unable to begin a distributed transaction. OLE DB provider "SQLNCLI11" for linked server "Azure_SQLDb" returned message "The parameter is incorrect.".

我不需要任何 DTC 事务的 Azure 链接服务器,所以我尝试在链接服务器属性中禁用此选项以查看它是否有帮助,但没有帮助。

我读到我们无法将 MSDTC 连接到 azure SQL 数据库,这对我来说很好,因为我不会在我的本地数据库和 azure sql 数据库之间进行任何交易。

当链接服务器连接到 azure sql 数据库时,我想在我的服务器计算机中找到 运行 DTC 服务 运行ning 的解决方案。

Azure SQL 数据库不支持分布式事务。

SQL 数据库中的分布式事务

SQL数据库不支持分布式事务,即多个事务管理器(多个资源)的事务。有关详细信息,请参阅 Distributed Transactions (ADO.NET) 。这意味着 SQL 数据库不允许 Microsoft 分布式事务处理协调器 (MS DTC) 委托分布式事务处理。因此,您不能使用 ADO.NET 或 MSDTC 提交或回滚跨越多个 SQL 数据库或 SQL 数据库和内部部署 [=28] 的组合的单个事务=] 服务器.

更多详情,请看这里:Handling Transactions in Windows Azure SQL Database。 引用 blob:Distributed transaction similar to MSDTC between SQL Server azure and MSMQ\queue azure.

我认为没有解决方案可以帮助您。

希望对您有所帮助。

@dks 您遇到的问题不正常 - 通常只有当您的应用程序试图启动分布式事务以协调状态更改时才会发生。 (有时应用程序使用分布式事务来协调应用程序和数据层之间的状态更改,所以您的情况可能会发生这种情况)。如果您 运行 来自 EF 或类似机构,请检查以确保它没有代表您启动 DTC。

无论如何,我建议您使用最新的 OLEDB 提供程序。去年 Microsoft 推出了更新的提供程序,您可以在这里下载:

https://www.microsoft.com/en-us/download/details.aspx?id=56730