2016-07-24 26 views
0

我们有一个存储过程由日常工作计划调用,该工作计划用于在合理的时间范围内工作,但现在表现非常糟糕且失败。无论原因如何,它似乎也陷入了整个系统的困境。我们尝试重新启动电脑,但问题依然存在。SQL Server计划存储过程正在运行,但现在运行速度非常缓慢

存储过程充当ETL以将数据从一个数据库导入另一个数据库并进行一些更新。从工作中调用时,它曾经在一个小时内运行,但大约7天前它开始运行10-15小时。然后最后3天它完全失败了。今天,我让它运行10个小时,然后取消它。

失败运行的错误消息发现它失败,因为日志文件空间不足。所以我试图通过使用下面的代码缩小日志文件。它的工作,但它并没有减少文件的大小。由于代码没有工作,我尝试使用SSMS萎缩,但失败是由于错误:

Lock request time out period exceeded

我跑sp_who2和,不知道是肯定的(我是一个开发商不是DBA),发现这似乎相关的情况如下:

SPID: 63, Status: Suspended, Command: Delete, CPU Time: 1142382, DiskIO: 1254258

我想这可能是这个问题,所以我试图结束使用Kill 63该交易。然而,似乎没有工作,因为如果我跑sp_who2它现在读取

SPID: 63, Status: Suspended, Command: Killed/Rollback, CPU Time: 1142803, DiskIO: 1261601

任何帮助解决这一问题,将不胜感激!具体来说:

  1. 任何想法可能会突然造成不良表现?

  2. 如何缩小日志文件?这可能会导致糟糕的表现吗?

这是我试过的代码:

USE MyDatabase; 
GO 

ALTER DATABASE MyDatabase 
SET RECOVERY SIMPLE; 
GO 

DBCC SHRINKFILE (MyDatabase_log, 1); 
GO 

ALTER DATABASE MyDatabase 
SET RECOVERY FULL; 
GO 
+1

尽管在这方面有很多关于数据库知识的人,但你可能会有更好的运气询问[dba.se],因为该网站可能更侧重于与非发展相关的方面。 – jpw

+1

您提供的信息并没有多大帮助。请发布存储过程的执行计划,也尝试更新存储过程中涉及的对象的统计信息...发布您的sql版本。最重要的是看看这里,看看如何询问并获得帮助尽管它的tsql格式,尝试了解本质..https://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ – TheGameiswar

+0

您需要查看与您的查询相关的数据是否有增长。另外,查看“长时间运行的查询”,您可能会看到一些趋势 - 或者至少运行它们(如果它们正在读取数据),然后监视您的服务器统计信息和基础硬件。 –

回答

0

这最终是硬盘的问题。最初硬件团队坚持认为它不是,但经过进一步测试和评估后,它实际上是一个糟糕的磁盘。

相关问题