Tôi đồng ý với các đề xuất để xóa các lần xóa của bạn thành các phần có thể quản lý nếu bạn không thể sử dụng TRUNCATE và tôi thích đề xuất thả / tạo cho tính nguyên bản của nó, nhưng tôi tò mò về nhận xét sau trong câu hỏi của bạn:
Về cơ bản, nó tương đương với câu lệnh TRUNCATE TABLE - ngoại trừ tôi không được phép sử dụng TRUNCATE
Tôi đoán lý do cho sự hạn chế này có liên quan đến bảo mật cần được cấp để cắt trực tiếp một bảng và thực tế là nó sẽ cho phép bạn cắt bớt các bảng khác với bảng bạn quan tâm.
Giả sử là như vậy, tôi tự hỏi nếu có một thủ tục được lưu trữ được tạo bằng TRUNCATE TABLE và sử dụng "EXECUTE AS" sẽ được coi là một giải pháp thay thế khả thi để cung cấp các quyền bảo mật cần thiết để cắt trực tiếp bảng.
Hy vọng, điều này sẽ cung cấp cho bạn tốc độ bạn cần đồng thời giải quyết các mối lo ngại về bảo mật mà công ty bạn có thể có khi thêm tài khoản của bạn vào vai trò db_ddladmin.
Một ưu điểm khác của việc sử dụng một thủ tục được lưu trữ theo cách này là chính thủ tục được lưu trữ có thể bị khóa để chỉ những tài khoản cụ thể mới được phép sử dụng nó.
Nếu vì một lý do nào đó, đây không phải là một giải pháp có thể chấp nhận được và việc bạn cần xóa dữ liệu trong bảng này là việc cần thực hiện mỗi ngày một lần / giờ / v.v., tôi sẽ yêu cầu một công việc Tác nhân SQL được tạo ra để cắt bớt bảng vào một thời gian dự kiến mỗi ngày.
Hi vọng điêu nay co ich!