SQL 服务器计划的存储过程正在运行,但现在运行速度很慢

SQL Server scheduled stored procedure was working, but now runs very slowly

我们有一个被每日作业计划调用的存储过程,它曾经在合理的时间范围内工作,但现在表现非常糟糕并且失败了。不管是什么原因,它似乎也在拖累我们的整个系统。我们尝试重新启动计算机,但问题仍然存在。

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

失败 运行 的错误消息发现它失败了,因为日志文件不在 space 中。所以我尝试使用下面的代码缩小日志文件。它有效,但根本没有减小文件大小。由于代码不起作用,我尝试使用 SSMS 缩小,但由于错误而失败:

Lock request time out period exceeded

我 运行 sp_who2 并不确定(我是开发人员而不是 DBA),发现以下内容似乎相关:

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

我认为这可能是问题所在,所以我尝试使用 Kill 63 结束 t运行saction。但是,这似乎不起作用,因为如果我 运行 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

这是一个硬盘问题。最初硬件团队坚称它不是,但经过进一步测试和审查,它实际上是一个坏磁盘。