2015-04-20 37 views
2

我有一个存储过程,它在执行时运行速度很快,或者突出显示通常运行或执行代码的f5脚本。快速存储过程,但使用作业执行时速度慢

只用了一个第二秒或1.5秒刚刚从1个表,它是从一个服务器选择顶部3并把它插入到另一个表,这也是在另一个服务器。

但是当我尝试使用作业来执行存储过程时,只需要一生就可以做到这一点。我错过了什么吗?

USE [xxxx] 
GO 
/****** Object: StoredProcedure [dbo].[MARK_ACTIVE] Script Date: 4/20/2015 5:55:53 PM ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 



ALTER PROCEDURE [dbo].[xxxx] 
AS 
SET ANSI_NULLS ON 
INSERT INTO [123.456.7.890].[DBASE1].[dbo].[TABLE] (smsfr,smsmsg,smsdt,dbdt,devid,status,status2,IsHEX) 
SELECT TOP 3 smsfr,smsmsg,smsdt,dbdt,devid,status,status2,IsHEX 
FROM [098.765.4.321].[[DBASE2].[dbo].[TABLE2] cr 
WHERE 
NOT EXISTS (SELECT id,smsfr,smsmsg,smsdt,dbdt,devid,status,status2,IsHEX  FROM [123.456.7.890].[DBASE1].[dbo].[TABLE] c 
     WHERE cr.smsdt = c.smsdt) 
+1

是额外的'[''在FROM [098.765.4.321]。[DBASE2] [DBO]。[TABLE2] cr'一个错字? – Raj

+0

是的,这只是一个错字错误。对不起 – CheAnne

+0

这是按计划运行吗?您是否试过通过右键单击作业手动设置代理作业?这可能是因为如果它是一个预定的作业,它会与其他作业一起运行,导致任一服务器的I/O增加。这会导致速度放慢。 –

回答

1

从理论上讲,从任何连接调用的相同的存储过程应该以大致相同的速度运行,而不管谁调用它。但是......有连接设置会导致创建不同的执行计划。如果你在SSMS中运行事物(大概是从你自己的PC本地运行)和你的服务器上自动运行的东西之间获得不同的性能,我会检查两台机器上的ANSI连接设置。看看有什么不同,因为我敢打赌,你已经得到的东西不同,但有

相关问题