Một kích hoạt sẽ là cách tôi sẽ xử lý này. Điều này sẽ làm chậm tất cả các báo cáo cập nhật của bạn vì SQL hiện có rất nhiều việc phải làm, nhưng nó sẽ xử lý yêu cầu của bạn.
CREATE TRIGGER Something on dbo.SomeTable
FOR UPDATE
AS
BEGIN
IF (select count(*) from inserted) > 30000
BEGIN
RAISERROR('To many rows being processed at one. Reduce and try again.', 16, 1)
ROLLBACK
END
END
Cá nhân tôi không thích ý tưởng thay vì kích hoạt và áp dụng lại bản cập nhật với một hàng nhỏ hơn vì điều này sẽ đi vào các khu vực khó khăn của một nửa các hoạt động đã hoàn thành có thể trở nên rất lộn xộn, nhanh chóng.