Dzięki za wszystkie opinie. Pracowałem z kimś z MSFT na forach MSDN, aby dowiedzieć się, co się dzieje. Okazuje się, że problem jest spowodowany niepowodzeniem jednej z wstawek z powodu problemu z konwersją daty i godziny.
Głównym problemem jest to, że ten błąd pojawia się, jeśli jest to błąd konwersji dat. Jeśli jednak jest to inny błąd, na przykład pole jest zbyt długie, nie powoduje tego problemu. W obu przypadkach spodziewałbym się, że transakcja nadal będzie istnieć, więc mogę wywołać wycofanie jej.
Mam pełny przykładowy program do odtworzenia tego problemu. Jeśli ktoś chce go zobaczyć lub wymienić z MSFT, może znaleźć wątek na grupach dyskusyjnych MSFT w microsoft.public.dotnet.framework.adonet w wątku błędu SqlTransaction.ZombieCheck.