是否有人解释为什么在安排程序运行或从Access数据库中的VBA执行时,存储过程中的数据似乎已损坏?
我遇到的问题是,当数据来自以前面提到的方式执行的存储过程时,构建物料清单的CTE查询不希望运行。我可以删除数据并从Management Studio执行存储过程,CTE查询工作正常。
存储过程非常基本,只需插入BOM
表并添加日期,这样我就可以看到BOM每天如何变化。 BOM
表来自我从链接服务器创建的视图,但我更改了存储过程以仅使用链接服务器信息但仍然会导致问题。
BEGIN
INSERT INTO daily_bom
SELECT CONVERT(VARCHAR, Getdate(), 101) AS BOM_Date,
plantnumber,
bomnumber,
parentassembly,
bomusage,
CONVERT(INT, bomalternativenumber) BOMAleternativeNumber,
bomalternativetext,
componentmaterial,
CONVERT(FLOAT, sequencelinenumber) SequenceLineNumber,
itemcategory,
CONVERT(REAL, componentquantity) ComponentQuantity,
fixedquantity,
componentunitofmeasure,
assemblyindicator,
phantomindicator,
costingrelevant,
engineeringrelevant,
productionrelevant,
ecnnumber,
ecneffectivedate,
ecnnumberto,
ecneffectiveenddate,
xrefnumber,
referencedesignator,
itemid,
procurementtype,
documentnumber,
dtsdate,
dateoflastchange,
senttoproductionsuitedatetime,
lastidocprocessed,
inserttoproductionsuite,
lastidocserial
FROM sap_bill_of_material
END
我会尝试为你们中的某些人更好地解决这个问题,所以请忽略它的CTE部分。如果我安排存储过程运行一夜并对该数据运行查询,则需要花费不寻常的时间来运行。如果我删除该数据并执行存储过程或手动启动SSMS中的SQL Server代理中的预定作业并查询数据,则运行正常。
所以每天早上当我进入并尝试查询数据时,运行速度非常慢,只需几分钟而不是几秒钟(导致CTE仍然运行超过5分钟而23秒)。如果我删除数据并重新运行存储过程它似乎工作正常(我已经检查,我删除了当我再次运行存储过程时插入的相同数量的行)。知道什么会导致这个,即pc没有醒来,在运行存储过程时在服务器上运行的东西。
编辑已添加1/11/16
这个还没什么。我想有人会以前见过这个问题。我试图让CTE查询在相当长的时间内运行的唯一另一件事是将查询的表转储到另一个临时表中并查询它。这种方法很好。当查询数据来自的实际表时,仍然不知道为什么它需要这么长时间(实际上并没有让它完成,因为它已经超过10分钟)。