Les Transactions à l'intérieur de la boucle à l'intérieur de la procédure stockée

Je suis en train de travailler sur une procédure qui permettra de mettre à jour un grand nombre d'éléments sur un serveur distant, à l'aide des enregistrements à partir d'une base de données locale. Voici le pseudo-code.

CREATE PROCEDURE UpdateRemoteServer
    pre-processing
    get cursor with ID's of records to be updated
    while on cursor
        process the item

Peu importe combien nous l'optimiser, la routine va prendre un certain temps, donc nous ne voulons pas le tout d'être traitée comme une transaction unique. Les éléments sont marqués, après avoir été traitées, de sorte qu'il devrait être possible de reprendre là où nous nous sommes quittés si le processus est interrompu.

Emballage le contenu de la boucle ("l'élément") dans un begin/commit tran ne fait pas l'affaire... il semble que l'intégralité de la déclaration

EXEC UpdateRemoteServer

est traitée comme une transaction unique. Comment puis-je faire de chaque élément de processus comme un système complet, transaction distincte?

Remarque que j'aimerais pour l'exécution de ces "non-traitées mises à jour", mais cette option n'est disponible (pour autant que je sache) en 2008.

OriginalL'auteur harpo | 2009-10-08