2009-07-09 18 views
0

SQL Serverに情報を格納するサードパーティ製のアプリケーションでユーザーを作成する必要があります。また、このユーザーに関する情報をSQL Serverのアプリケーションデータベースにも格納します。トランザクションで新しいプロセスを開始

私はTransactionScopeで両方の更新をラップして、成功またはロールバックできるようにしたいと考えていました。残念ながら、私がユーザーを作成するための唯一の方法は、コマンドラインユーティリティを使用して、現在Process.Start呼び出しを実行していることです。新しいプロセスがまだ私のアクティブなトランザクションに参加していることを期待していましたが、これはそうではないようです。

両方のデータベースが同じサーバーマシン上にありますが、異なるインスタンスの下にあります。私のアプリケーションはC#for .NET 3.5で書かれています

私は間違ったことをしていますか、このプロセスをトランザクションに参加させる明白な方法がありますか、それとも手動で変更をロールバックする必要がありますか?

答えて

1

分散トランザクションにコマンドラインアプリを入隊

1

質問に答えるには:自動的に同じトランザクションスコープに入ることはできません。最初にユーザーを作成してください。失敗すると、データベースにレコードを作成することさえできません。

ユーザーを作成するために使用するコマンドラインプロセスがエラーコードを返す場合( 'public static int Main()'のint)、トランザクションの結果の一部をチェックしてください0は成功を意味し、他のすべては通常、それはエラーコードを作成しない場合。

を失敗したことを意味している。しかし、STDERRにいくつかのテキスト、それは出力だ読んで、その方法を確認し、STDERRストリームを上書きする。

+0

提案をいただきありがとうございます。これは質問を投稿する前に私がやっていたことでした。私の状況では機能しますが、代替案があれば私は興味がありました。 – MattH

関連する問題