服务器“”上的 MSDTC 不可用。 sql 服务器 link 调用存储过程时服务器出错

MSDTC on server '' is unavailable. sql server link server error when call stored procedure

我有 3 个服务器,名称分别为 ServiceServerDatabaseServerWarehouseServer

我在 ServiceServer 上有一个 WCF 服务调用 DatabaseServer 中的存储过程。

public async void UpdateStatus(NajaResult najaresult, string userid, string IsWorn, string FuelSystem, string ValidTest, string SymfaServiceStatus, string NajaServiceStatus)
{
    string _FuelSystem = (string.IsNullOrEmpty(FuelSystem)) ? "2" : FuelSystem;
    _ctx.Database.ExecuteSqlCommand("EXEC [dbo].[UpdateInquiryStatus] @userid='" + userid + "', @IsWorn='" + IsWorn + "',@FuelSystem='" + _FuelSystem + "',@ValidTest='" + ValidTest + "',@SymfaServiceStatus='" + SymfaServiceStatus + "',@NajaServiceStatus='" + NajaServiceStatus + "' ,"
+ "@Chassis='" + najaresult.Chassis + "',@CarColor=N'" + najaresult.CarColor + "',@MotorNum='" + najaresult.MotorNum + "' ,@Vin='" + najaresult.VinNo + "', @SystemType=N'" + najaresult.SystemType + "',@CarTipe=N'" + najaresult.CarTip + "',@FuelType='" + najaresult.FuelType + "',@Model='" + najaresult.CarModel + "'" + ",@CarType=N'" + najaresult.CarType + "'");
}

这是我的存储过程 UpdateInquiryStatus,它位于 DatabaseServer:

ALTER PROCEDURE [dbo].[UpdateInquiryStatus]
    @userid nvarchar(max),
    @IsWorn nvarchar(max),
    @FuelSystem nvarchar(max),
    @ValidTest nvarchar(max),
    @SymfaServiceStatus nvarchar(max),
    @NajaServiceStatus nvarchar(max),
    @Vin nvarchar(max),
    @SystemType nvarchar(max),
    @CarTipe nvarchar(max),
    @FuelType nvarchar(max),
    @Model nvarchar(max),
    @Chassis nvarchar(max),
    @CarColor nvarchar(max),
    @MotorNum nvarchar(max),
    @CarType nvarchar(max)
AS   
    INSERT INTO [PRISYMFA22a1\MASSYMSQLSERVER].[DB].[dbo].AutomotiveTemps 
           (id, isworn, validtest, CarColor, CarTipe, CarType, Chassis, 
            FuelSystem, FuelType, Model, MotorNum, SubmitDatetime, 
            SystemType, UserId, VIN)
    VALUES (NEWID(), @IsWorn, @ValidTest, @CarColor, @CarTipe, @CarType, @Chassis,
            @FuelSystem, @FuelType, @Model, @MotorNum, GETDATE(),
            @SystemType, @userid, @Vin)

请注意,我在 DatabaseServerWarehouseServer 之间创建了一个 link 服务器。

如您所见,我的程序将一条记录插入 WarehouseServer,但我收到此错误:

MSDTC on server 'DatabaseServer' is unavailable.

但是我的 msdtc 是 运行 并且所有防火墙都被禁用了。我也在组件服务中打开了所有入站和出站远程。但是返回了同样的错误

转到数据库服务器上的组件服务并向下导航到本地 DTC,右键单击和 select 属性。

在“安全”选项卡上,确保选中“网络 DTC 访问”和“允许远程客户端”。

选中事务管理器通信下的允许入站(可能还有出站),您可能需要根据您在 DatabaseServer 和 ServiceServer 上 运行 的 Windows 版本更改身份验证。