2009-07-09 16 views
0

Je dois créer un utilisateur dans une application tierce qui stocke ses informations dans SQL Server et stocker également des informations sur cet utilisateur dans notre base de données d'applications, également dans SQL Server. Je souhaitais envelopper les deux mises à jour dans un TransactionScope, afin qu'elles puissent réussir ou revenir en arrière ensemble. Malheureusement, la seule méthode que j'ai pour créer des utilisateurs est via un utilitaire de ligne de commande, que je suis en train de lancer un appel Process.Start. J'espérais que le nouveau processus pourrait toujours s'engager dans ma transaction active, mais cela ne semble pas être le cas.Démarrer un nouveau processus dans une transaction

En l'occurrence, les deux bases de données se trouvent sur la même machine serveur, mais sont sous des instances différentes. Mon application est écrite en C# pour .NET 3.5

Est-ce que je fais quelque chose de mal, ou y a-t-il un moyen explicite d'obtenir ce processus pour s'enrôler dans la transaction, ou vais-je simplement annuler manuellement les changements?

Répondre

1

commande ENRÔLEZ app ligne transaction distribuée - Je ne pense pas que cela puisse être fait

1

Pour répondre à votre question: Ils ne peuvent pas entrer automatiquement dans le même périmètre de transaction. Essayez de créer l'utilisateur d'abord, de cette façon, s'il échoue, vous ne créez même pas les enregistrements dans votre base de données. Si votre processus de ligne de commande que vous utilisez pour créer l'utilisateur renvoie un code d'erreur (l'int dans 'public static int Main()' vérifie cela et fait cette partie du résultat de votre transaction. tout le reste signifie généralement l'échec.

Si elle ne crée pas un code d'erreur. mais un texte sur STDERR, passer outre le flux STDERR, lisez sa sortie et vérifier cette façon.

+0

Merci pour les suggestions, c'était en fait ce que je faisais avant de poster la question et fonctionne dans ma situation mais j'étais curieux s'il y avait une alternative. – MattH

Questions connexes