Я погоджуюся з пропозиціями зібрати ваші делети в керовані шматки, якщо ви не в змозі використовувати TRUNCATE, і мені подобається пропозиція падіння / створення для його оригінальності, але мені цікаво наступний коментар у вашому запитанні:
Це в основному еквівалентно оператору TRUNCATE TABLE - за винятком того, що мені заборонено використовувати TRUNCATE
Я здогадуюсь, що причина цього обмеження пов’язана із безпекою, яку потрібно надати для прямого врізання таблиці, і з тим, що вона дозволить вам усікати таблиці, окрім тієї, про яку ви маєте справу.
Якщо припустити, що це так, мені цікаво, якщо створення збереженої процедури, яка використовує TRUNCATE TABLE і використовує "EXECUTE AS", вважатиметься життєздатною альтернативою наданню прав на безпеку, необхідних для усікання таблиці безпосередньо.
Сподіваємось, це забезпечить вам необхідну швидкість, а також вирішить проблеми безпеки, які може мати ваша компанія, додавши ваш обліковий запис до ролі db_ddladmin.
Ще одна перевага використання збереженої процедури таким чином полягає в тому, що саму збережену процедуру можна заблокувати, так що використовувати її можуть лише конкретні акаунти.
Якщо з якихось причин це не прийнятне рішення, і вам потрібно буде видалити дані в цій таблиці, що потрібно робити один раз на день / годину / тощо, я б просив створити завдання агента SQL для усікання таблиці у запланований час кожного дня.
Сподіваюся, це допомагає!