服务器上的MSDTC''不可用。调用存储过程时sql server链接服务器错误

时间:2017-10-24 07:46:53

标签: sql-server wcf stored-procedures msdtc

我有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之间创建了一个链接服务器。

正如您所见,请参阅我的程序将记录插入WarehouseServer但我收到此错误:

  服务器上的MSDTC' DatabaseServer'不可用。

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

1 个答案:

答案 0 :(得分:0)

转到DatabaseServer上的组件服务并向下导航到本地DTC,右键单击并选择属性。

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

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