Sudahkah Anda mencoba menyetel XACT_ABORT
di awal skrip Anda?
SET XACT_ABORT ON
Tidak terkait, tetapi tidak dapatkah loop ditulis sebagai:
-- Continue looping while rows exist
WHILE EXISTS (SELECT 1 FROM [LINKEDSERVER].MasterDatabase.dbo.Logging WITH(NOLOCK)
WHERE [Date] < @ArchiveDate)
Atau bahkan lebih baik, tulis ulang sehingga Anda tidak menekan tabel tertaut dua kali per iterasi loop.