Опитахте ли да настроите XACT_ABORT
в началото на вашия скрипт?
SET XACT_ABORT ON
Не е свързано, но не може ли цикълът да бъде написан като:
-- Continue looping while rows exist
WHILE EXISTS (SELECT 1 FROM [LINKEDSERVER].MasterDatabase.dbo.Logging WITH(NOLOCK)
WHERE [Date] < @ArchiveDate)
Или още по-добре, пренапишете, така че да не удряте свързаната таблица два пъти на итерация на цикъл.