如何解决链接服务器查询期间超时
我有一个包含10个表的SQL Server 2017数据库。每个表都由第三方应用程序填充。
当任何表中有任何插入/更新时,将触发一个触发器。触发器将更新位于远程SQL Server 2017实例和数据库(linkserver
)中的另一个表。
该远程数据库仅包含一个表,该表维护源数据库的信息(10个表)。因此,我有10个after insert
触发器和10个after update
触发器。每个表大约有172列。
有时候,我会报错
超时已过期。操作完成之前已经过了超时时间,或者服务器没有响应
我的after insert
触发器是:
ALTER TRIGGER [dbo].[AfterINSERTTriggerONE] on [dbo].[ONE]
FOR INSERT AS
INSERT INTO [TargetServer].[TargetDb].[dbo].[DataLogs](
[DeviceId],[DateTime],[TimeStampUTC],[StationIsOpen],[PanelIsOpen],[PowerIsOscillating],[Heater1_FlameIsOn],[Heater1_Flame2IsOn],[Heater1_WaterLevelSwitch],[Heater2_FlameIsOn],[Heater2_Flame2IsOn],[Heater2_WaterLevelSwitch],[Heater3_FlameIsOn],[Heater3_Flame2IsOn],[Heater3_WaterLevelSwitch],[Heater4_FlameIsOn],[Heater4_Flame2IsOn],[Heater4_WaterLevelSwitch],[Ups_BatteryMode],[Ups_BatteryCharging],[Ups_ShutdownEvent],[Ups_Remote],[Filter1],[Filter2],[Filter3],[AirConditionerIsOn],[R1_P],[R1_T],[R1_Qb],[R1_Qm],[R1_C],[R1_CarbonDioxide],[R1_Nitrogen],[R1_TbX],[R1_PbX],[R1_Methane],[R1_Ethane],[R1_Propane],[R1_iButane],[R1_BatRemain],[R1_Productivity],[R2_P],[R2_T],[R2_Qb],[R2_Qm],[R2_C],[R2_CarbonDioxide],[R2_Nitrogen],[R2_TbX],[R2_PbX],[R2_Methane],[R2_Ethane],[R2_Propane],[R2_iButane],[R2_BatRemain],[R2_Productivity],[R3_P],[R3_T],[R3_Qb],[R3_Qm],[R3_C],[R3_CarbonDioxide],[R3_Nitrogen],[R3_TbX],[R3_PbX],[R3_Methane],[R3_Ethane],[R3_Propane],[R3_iButane],[R3_BatRemain],[R3_Productivity],[R4_P],[R4_T],[R4_Qb],[R4_Qm],[R4_C],[R4_CarbonDioxide],[R4_Nitrogen],[R4_TbX],[R4_PbX],[R4_Methane],[R4_Ethane],[R4_Propane],[R4_iButane],[R4_BatRemain],[R4_Productivity],[Total_Qb],[Total_Qm],[InGasP],[InGasT],[OutGasP],[OutGasT],[AirT],[AirHumadity],[PanelT],[PanelHumadity],[ConexTemperature],[ConexHumadity],[StationCapacity],[Productivity],[Heater1_InGasT],[Heater1_WaterT],[Heater1_OutGasT],[Heater1_WaterLevel],[Heater2_InGasT],[Heater2_WaterT],[Heater2_OutGasT],[Heater2_WaterLevel],[Heater3_InGasT],[Heater3_WaterT],[Heater3_OutGasT],[Heater3_WaterLevel],[Heater4_InGasT],[Heater4_WaterT],[Heater4_OutGasT],[Heater4_WaterLevel],[OdorizerLevel1],[OdorizerLevel2],[Ups_AmbientTemperature],[Ups_BatteryDischargeCurrent],[Ups_BatteryVoltage],[Ups_OutputVoltage],[TBS_OutGasP],[R1_VbT],[R1_Vb],[R1_Vbd],[R1_VmT],[R1_Vm],[R1_Vmd],[R1_Vb_PrevDay],[R1_Vm_PrevDay],[R2_VbT],[R2_Vb],[R2_Vbd],[R2_VmT],[R2_Vm],[R2_Vmd],[R2_Vb_PrevDay],[R2_Vm_PrevDay],[R3_VbT],[R3_Vb],[R3_Vbd],[R3_VmT],[R3_Vm],[R3_Vmd],[R3_Vb_PrevDay],[R3_Vm_PrevDay],[R4_VbT],[R4_Vb],[R4_Vbd],[R4_VmT],[R4_Vm],[R4_Vmd],[R4_Vb_PrevDay],[R4_Vm_PrevDay],[Total_Vb_PrevDay]
)
select
StationName,Time_Stamp,Utc,StationIsOpen,PanelIsOpen,PowerIsOscillating,Heater1_FlameIsOn,Heater1_Flame2IsOn,Heater1_WaterLevelSwitch,Heater2_FlameIsOn,Heater2_Flame2IsOn,Heater2_WaterLevelSwitch,Heater3_FlameIsOn,Heater3_Flame2IsOn,Heater3_WaterLevelSwitch,Heater4_FlameIsOn,Heater4_Flame2IsOn,Heater4_WaterLevelSwitch,Ups_BatteryMode,Ups_BatteryCharging,Ups_ShutdownEvent,Ups_Remote,Filter1,Filter2,Filter3,AirConditionerIsOn,R1_P,R1_T,R1_Qb,R1_Qm,R1_C,R1_CarbonDioxide,R1_Nitrogen,R1_TbX,R1_PbX,R1_Methane,R1_Ethane,R1_Propane,R1_iButane,R1_BatRemain,R1_Productivity,R2_P,R2_T,R2_Qb,R2_Qm,R2_C,R2_CarbonDioxide,R2_Nitrogen,R2_TbX,R2_PbX,R2_Methane,R2_Ethane,R2_Propane,R2_iButane,R2_BatRemain,R2_Productivity,R3_P,R3_T,R3_Qb,R3_Qm,R3_C,R3_CarbonDioxide,R3_Nitrogen,R3_TbX,R3_PbX,R3_Methane,R3_Ethane,R3_Propane,R3_iButane,R3_BatRemain,R3_Productivity,R4_P,R4_T,R4_Qb,R4_Qm,R4_C,R4_CarbonDioxide,R4_Nitrogen,R4_TbX,R4_PbX,R4_Methane,R4_Ethane,R4_Propane,R4_iButane,R4_BatRemain,R4_Productivity,Total_Qb,Total_Qm,InGasP,InGasT,OutGasP,OutGasT,AirT,AirHumadity,PanelT,PanelHumadity,ConexTemperature,ConexHumadity,StationCapacity,Productivity,Heater1_InGasT,Heater1_WaterT,Heater1_OutGasT,Heater1_WaterLevel,Heater2_InGasT,Heater2_WaterT,Heater2_OutGasT,Heater2_WaterLevel,Heater3_InGasT,Heater3_WaterT,Heater3_OutGasT,Heater3_WaterLevel,Heater4_InGasT,Heater4_WaterT,Heater4_OutGasT,Heater4_WaterLevel,OdorizerLevel1,OdorizerLevel2,Ups_AmbientTemperature,Ups_BatteryDischargeCurrent,Ups_BatteryVoltage,Ups_OutputVoltage,TBS_OutGasP,R1_VbT,R1_Vb,R1_Vbd,R1_VmT,R1_Vm,R1_Vmd,R1_Vb_PrevDay,R1_Vm_PrevDay,R2_VbT,R2_Vb,R2_Vbd,R2_VmT,R2_Vm,R2_Vmd,R2_Vb_PrevDay,R2_Vm_PrevDay,R3_VbT,R3_Vb,R3_Vbd,R3_VmT,R3_Vm,R3_Vmd,R3_Vb_PrevDay,R3_Vm_PrevDay,R4_VbT,R4_Vb,R4_Vbd,R4_VmT,R4_Vm,R4_Vmd,R4_Vb_PrevDay,R4_Vm_PrevDay,Total_Vb_PrevDay
from inserted;
PRINT 'We Successfully Fired the AFTER INSERT Trigger for Table [ONE] in SQL Server.'
和AfterUpdate:
ALTER TRIGGER [dbo].[AfterUpdateTriggerONE] ON [dbo].[ONE]
AFTER UPDATE
AS
if (UPDATE (StationIsOpen))
BEGIN
UPDATE [TargetServer].[TargetDBDb].[dbo].[DataLogs]
SET Trg.StationIsOpen = ins.StationIsOpen,Trg.Updated = 1
FROM [TargetServer].[TargetDBDb].[dbo].[DataLogs] Trg
JOIN inserted ins
ON Trg.[DateTime] = ins.[Time_Stamp] AND
Trg.[DeviceId] = ins.[StationName]
END
if (UPDATE (PanelIsOpen))
BEGIN
UPDATE [TargetServer].[TargetDBDb].[dbo].[DataLogs]
SET Trg.PanelIsOpen = ins.PanelIsOpen,Trg.Updated = 1
FROM [TargetServer].[TargetDBDb].[dbo].[DataLogs] Trg
JOIN inserted ins
ON Trg.[DateTime] = ins.[Time_Stamp] AND
Trg.[DeviceId] = ins.[StationName]
END
.
.
.
and all other 170 columns
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。