我们有一个存储过程由日常工作计划调用,该工作计划用于在合理的时间范围内工作,但现在表现非常糟糕且失败。无论原因如何,它似乎也陷入了整个系统的困境。我们尝试重新启动电脑,但问题依然存在。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
任何帮助解决这一问题,将不胜感激!具体来说:
任何想法可能会突然造成不良表现?
如何缩小日志文件?这可能会导致糟糕的表现吗?
这是我试过的代码:
USE MyDatabase;
GO
ALTER DATABASE MyDatabase
SET RECOVERY SIMPLE;
GO
DBCC SHRINKFILE (MyDatabase_log, 1);
GO
ALTER DATABASE MyDatabase
SET RECOVERY FULL;
GO
尽管在这方面有很多关于数据库知识的人,但你可能会有更好的运气询问[dba.se],因为该网站可能更侧重于与非发展相关的方面。 – jpw
您提供的信息并没有多大帮助。请发布存储过程的执行计划,也尝试更新存储过程中涉及的对象的统计信息...发布您的sql版本。最重要的是看看这里,看看如何询问并获得帮助尽管它的tsql格式,尝试了解本质..https://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ – TheGameiswar
您需要查看与您的查询相关的数据是否有增长。另外,查看“长时间运行的查询”,您可能会看到一些趋势 - 或者至少运行它们(如果它们正在读取数据),然后监视您的服务器统计信息和基础硬件。 –