¿Ha intentado configurar XACT_ABORT
al comienzo de su secuencia de comandos?
SET XACT_ABORT ON
No relacionado, pero el ciclo no podría escribirse como:
-- Continue looping while rows exist
WHILE EXISTS (SELECT 1 FROM [LINKEDSERVER].MasterDatabase.dbo.Logging WITH(NOLOCK)
WHERE [Date] < @ArchiveDate)
O incluso mejor, reescriba para que no toque la tabla vinculada dos veces por iteración de ciclo.