Начать новый процесс в транзакции - PullRequest
0 голосов
/ 09 июля 2009

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

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

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

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

Ответы [ 2 ]

1 голос
/ 09 июля 2009

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

1 голос
/ 09 июля 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...