我真的很感激能够指出我的一些资源或分享一些个人经验的人。
我注意到我的sql 2k盒子cpu挂在接近100%的位置,它几乎与使用sql游标但没有释放内存的etl进程失败时完全相同。我停下来开始服务,它解决了问题。
这个etl进程早上早些时候失败,当服务器加入时,开发人员正在手动重新运行该进程。
总而言之:我的问题是:似乎很明显,etl进程可能导致服务器出现峰值,但是,我想知道是否/如何/为什么这个没有释放内存的过程可能导致这个问题。查询看起来类似于:
USE AdventureWorks
GO
DECLARE @ProductID INT
DECLARE @getProductID CURSOR
SET @getProductID = CURSOR FOR
SELECT ProductID
FROM Production.Product
OPEN @getProductID
FETCH NEXT
FROM @getProductID INTO @ProductID
WHILE @@FETCH_STATUS = 0
BEGIN
Insert into sometable values(@ProductID)
FETCH NEXT
FROM @getProductID INTO @ProductID
END
CLOSE @getProductID
GO
非常感谢。
答案 0 :(得分:0)
让人惊讶。您有一个嵌套游标,可以创建分配的大量资源。我不会说这绝对是你的问题,但肯定是 问题。