Возможна ли транзакция между локальным экземпляром SQL Server и базой данных SQL Azure.
У меня есть следующие тестовые случаи.
public class TransactionsTest
{
[Fact]
public void Test1()
{
var premisesDatabaseContext = new OnPremisesDatabaseContext();
var azureSQLDatabaseContext = new AzureSQLDatabaseContext();
using (TransactionScope scope = new TransactionScope())
{
premisesDatabaseContext.Database.Connection.Open();
azureSQLDatabaseContext.Database.Connection.Open();
scope.Complete();
}
}
[Fact]
public void Test2()
{
var premisesDatabaseContext = new OnPremisesDatabaseContext();
var azureSQLDatabaseContext = new AzureSQLDatabaseContext();
using (TransactionScope scope = new TransactionScope())
{
azureSQLDatabaseContext.Database.Connection.Open();
premisesDatabaseContext.Database.Connection.Open();
scope.Complete();
}
}
}
Это кажется довольно простым. Но оба тестовых случая терпят неудачу с различными ошибками, когда я открываю второе соединение.
Вот подробности ошибки.
// TEST 1
System.Reflection.TargetInvocationException:
Exception has been thrown by the target of an invocation.
--->
System.NullReferenceException: Object reference not set to an instance of an object.
at System.Transactions.Transaction.GetPromotedToken()
// TEST 2
System.Transactions.TransactionPromotionException:
There is a promotable enlistment for the transaction which has a PromoterType value that is not recognized by System.Transactions.
1c742caf-6680-40ea-9c26-6b6846079764
Я хочу знать, возможно ли это сделать. Если это невозможно, каковы альтернативы?