2016-04-15 8 views
0

これまでに成功していないAzure SQL DBに対してWCFトランザクションを作成しようとしています。ここで は一例です:Azure SQL DBに対するWCFトランザクション

このようにupdateData()の実装が見え
using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required)) 
{ 
     try 
     { 
      ServiceReference1.Service1Client proxy1 = new ServiceReference1.Service1Client(); 
      proxy1.UpdateData(); 
      ServiceReference2.Service1Client proxy2 = new ServiceReference2.Service1Client(); 
      proxy2.UpdateData(); 
      ts.Complete(); 
     } 
     catch (Exception ex) 
     { 
      ts.Dispose(); 
     } 
} 

[OperationBehavior(TransactionScopeRequired = true)] 
public void UpdateData() 
{ 
    SqlConnection objConnection = new SqlConnection(strConnection); 
    objConnection.Open(); 
    SqlCommand objCommand = new SqlCommand("INSERT INTO[Security].[Tenants] VALUES(3, 'test', '2016-04-14 14:20:00", objConnection); 
    objCommand.ExecuteNonQuery(); 
    objConnection.Close(); 
} 

何が起こることはconnection.Open(オン)例外がスローされます。 オブジェクト参照のインスタンスに設定されていません(トランザクションスコープなしで、または同じサービス内のトランザクションスコープ内でこれを実行しようとすると、正常に実行されます)。この問題は、WCFトランザクションで実行しようとする場合にのみ発生します。

+1

良好になり、完全な例外を転記:

SQLアズールに分散トランザクションのための唯一のサポートは、.NET 4.6.1の一部として導入されたサポートと、新しい、SQLネイティブ弾性トランザクションでありますアイディア。また、両方ともIDisposableを実装するSqlConnectionとSqlCommand b/cの両方に対してusingステートメントを実装する必要があります。 – Wjdavis5

+0

これは概念実証プロジェクトの証明です。そのため、using節が欠落しています。 –

答えて

0

WCFトランザクションは、AzureでネイティブにサポートされていないDistributed Transaction Coordinatorに依存していると思われます。

SQL Azure elastic transactions

+0

私は.NET Framework 4.6.1とAzure SQL DB V12を使用しています。 –

+0

はい、ただし、WCFはこれらの新しいエラスティックトランザクションの伝播をサポートしていません。これは、SQL Azureでサポートされていない古いDTCスタイルのトランザクションでのみ機能します。 – JoshL

+0

私は達成しようとしているものが現在不可能だと思います。 –

関連する問題