Hai provato a impostare XACT_ABORT
all'inizio del tuo script?
SET XACT_ABORT ON
Non correlato, ma non è stato possibile scrivere il ciclo come:
-- Continue looping while rows exist
WHILE EXISTS (SELECT 1 FROM [LINKEDSERVER].MasterDatabase.dbo.Logging WITH(NOLOCK)
WHERE [Date] < @ArchiveDate)
O ancora meglio, riscrivi in modo da non raggiungere la tabella collegata due volte per iterazione del ciclo.