2009-07-09 3 views
0

Мне нужно создать пользователя в стороннем приложении, которое хранит его информацию в SQL Server, а также я также храню информацию об этом пользователе в нашей базе данных приложений, также в SQL Server.Запуск нового процесса в транзакции

Я надеялся обернуть оба обновления в TransactionScope, чтобы они могли успешно или откатиться вместе. К сожалению, единственный метод, который я создаю для пользователей, - это утилита командной строки, которую я сейчас запускаю через вызов Process.Start. Я надеялся, что новый процесс все равно может быть включен в мою активную транзакцию, но, похоже, это не так.

Как это бывает, обе базы данных находятся на одном сервере, но находятся в разных экземплярах. Мое приложение написано на C# для .NET 3.5

Я делаю что-то неправильно или есть какой-то явный способ заставить этот процесс заручиться транзакцией или мне просто придется вручную отменить изменения?

ответ

1

Завербуйте приложение командной строки в распределенной транзакции - Не думаю, что это можно сделать.

1

Чтобы ответить на ваш вопрос: они не могут автоматически перейти в одну и ту же область транзакций. Попытайтесь создать пользователя во-первых, таким образом, если он терпит неудачу, вы даже не создаете записи в своем db.

Если ваш процесс командной строки, который вы используете для создания пользователя, возвращает код ошибки (int in 'public static int Main()' проверяет это и делает эту часть результата вашей транзакции 0 означает успех, все остальное, как правило, означает отказ.

Если он не создает код ошибки. но какой-то текст на STDERR, переопределения потока STDERR, прочитать его вывод и убедитесь, что путь.

+0

Спасибо за предложения, это было на самом деле то, что я делал, прежде чем я разместил вопрос и работает в моей ситуации, но мне было любопытно, есть ли альтернатива. – MattH

Смежные вопросы