我必须在第三方应用程序中创建用户,将其信息存储在SQL Server中,我还将有关此用户的信息存储在我们的应用程序数据库中,也存储在SQL Server中。
我希望在TransactionScope中包装两个更新,以便它们可以成功或一起回滚。不幸的是,我创建用户的唯一方法是通过命令行实用程序,我目前正在通过Process.Start调用运行。我希望新进程可能仍然存在于我的活动事务中,但似乎并非如此。
实际上,两个数据库都在同一台服务器上,但是在不同的实例下。我的应用程序是用C#for .NET 3.5编写的
我做错了什么,或者是否有一些明确的方法让这个过程在事务中登记,或者我只需要手动回滚更改?
答案 0 :(得分:1)
回答你的问题:他们不能自动进入同一个交易范围。尝试先创建用户,这样,如果失败,你甚至不在db中创建记录。
如果用于创建用户的命令行进程返回错误代码,('public static int Main()'中的int检查并将该部分作为事务的结果.0表示成功,一切否则通常意味着失败。
如果没有创建错误代码。但是STDERR上的一些文本会覆盖STDERR流,读取它的输出并检查它。
答案 1 :(得分:1)
在分布式事务中登记命令行应用程序 - 不要认为可以这样做。