我有3台名称为ServiceServer
,DatabaseServer
和WarehouseServer
的服务器。
我在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)
作为备注,我在DatabaseServer
和WarehouseServer
之间创建了一个链接服务器。
正如您所见,请参阅我的程序将记录插入WarehouseServer
但我收到此错误:
服务器上的MSDTC' DatabaseServer'不可用。
但是我的msdtc正在运行并且所有防火墙都被禁用。我也在组件服务中打开了所有入站和出站远程。但是返回了相同的错误
答案 0 :(得分:0)
转到DatabaseServer上的组件服务并向下导航到本地DTC,右键单击并选择属性。
在“安全”选项卡上,确保选中“网络DTC访问”并选中“允许远程客户端”。
在事务管理器通信下检查允许入站(可能是出站),您可能需要根据您在DatabaseServer和ServiceServer上运行的Windows版本来更改身份验证。