如何批量执行存储过程?

How do I execute a stored procedure in batches?

我从以前的开发人员那里继承了一个 NopCommerce 项目。 他们给我留下了一个拥有 3.5 亿来宾用户的客户 table。

我正在执行删除来宾用户的存储过程,但现在已经 运行ning 15 个小时了。 DTU 不断达到 100%,站点崩溃。 有办法批量 运行 这个吗?假设每个 运行?

有 500 万条记录

这是SQL:

DECLARE @return_value int,
    @TotalRecordsDeleted int

EXEC    @return_value = [dbo].[DeleteGuests]
    @CreatedFromUtc = NULL,
    @CreatedToUtc = NULL,
    @TotalRecordsDeleted = @TotalRecordsDeleted OUTPUT

SELECT  @TotalRecordsDeleted as N'@TotalRecordsDeleted'

SELECT  'Return Value' = @return_value

GO

好吧 - 事实证明,有一种非常明显的拆分工作的方法。 我将 post 放在下面,以防其他人 运行 遇到同样的问题。

通过设置日期范围,您可以运行分步执行此操作,而不会使服务器停滞数小时或数天。

DECLARE @return_value int,
    @TotalRecordsDeleted int

EXEC    @return_value = [dbo].[DeleteGuests]
    @CreatedFromUtc = N'2022-04-01', -- Start date
    @CreatedToUtc = N'2022-04-15', -- End Date
    @TotalRecordsDeleted = @TotalRecordsDeleted OUTPUT

SELECT  @TotalRecordsDeleted as N'@TotalRecordsDeleted'

SELECT  'Return Value' = @return_value

GO