Ich bin mit den Vorschlägen einverstanden, Ihre Löschvorgänge in überschaubare Blöcke aufzuteilen, wenn Sie TRUNCATE nicht verwenden können, und ich mag den Drop / Create-Vorschlag für seine Originalität, aber ich bin gespannt auf den folgenden Kommentar in Ihrer Frage:
Es entspricht im Grunde einer TRUNCATE TABLE-Anweisung - außer ich darf TRUNCATE nicht verwenden
Ich vermute, der Grund für diese Einschränkung hängt mit der Sicherheit zusammen, die gewährt werden muss, um eine Tabelle direkt abzuschneiden, und mit der Tatsache, dass Sie damit andere als die von Ihnen betroffenen Tabellen abschneiden können.
Unter der Annahme, dass dies der Fall ist, frage ich mich, ob eine gespeicherte Prozedur, die TRUNCATE TABLE verwendet und "EXECUTE AS" verwendet, eine praktikable Alternative zu Sicherheitsrechten ist, die zum direkten Abschneiden der Tabelle erforderlich sind.
Hoffentlich erhalten Sie auf diese Weise die Geschwindigkeit, die Sie benötigen, und können gleichzeitig die Sicherheitsbedenken Ihres Unternehmens in Bezug auf das Hinzufügen Ihres Kontos zur Rolle "db_ddladmin" berücksichtigen.
Ein weiterer Vorteil der Verwendung einer gespeicherten Prozedur auf diese Weise besteht darin, dass die gespeicherte Prozedur selbst gesperrt werden kann, sodass nur bestimmte Konten sie verwenden dürfen.
Wenn dies aus irgendeinem Grund keine akzeptable Lösung ist und Sie die Daten in dieser Tabelle einmal pro Tag / Stunde / usw. entfernen müssen, fordere ich Sie auf, einen SQL Agent-Job zu erstellen, um die Tabelle abzuschneiden zu einer festgelegten Zeit jeden Tag.
Hoffe das hilft!