2017-12-26 5 views
0

SQL Server 2008 R2を2つのシステムにインストールしました。この1つのシステムはサーバーとして動作し、もう1つはクライアントです。asp.netで単一のTransactionScopeで2つのSqlConnectionを使用する方法C#

は、私はそれを示して私が

  using (TransactionScope trnsScope = new TransactionScope()) 
     { 
      try 
      { 
       List<Master_ProductBLL> lstProduct = new List<Master_ProductBLL>(); 
       //My First SQL Connection For Server 
       using (SqlConnection connection = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DBConnection"].ConnectionString)) 
       { 
        connection.Open(); 
        //Here I can get All Products from Server Database 
        lstProduct = Master_ProductBLL.GetMaster_ProductBLLs(DBAction.Status.Active, ""); 
        connection.Dispose(); 
       } 

       //My Second SQL Connection For Client 
       using (SqlConnection connection = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DBConnection1"].ConnectionString)) 
       { 
        connection.Open(); 

        //Here I have save my Server Product into Client SQL Server 
        foreach (Master_ProductBLL item in lstProduct) 
        { 
         item.Save(true); 
        } 
        connection.Dispose(); 
       } 
       trnsScope.Complete(); 
       trnsScope.Dispose(); 
      } 
      catch (TransactionException ex) 
      { 
       trnsScope.Dispose(); 
       throw ex; 
      } 
     } 

コーディング

<connectionStrings> 
<add name="DBConnection" connectionString="Data Source=SERVER-PC\SQLEXPRESS2008;Initial Catalog=POS;Integrated Security=False;User Id=sa;Password=sql2008;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" /> 
<add name="DBConnection1" connectionString="Data Source=CLIENT-PC\SQLEXPRESS2008;Initial Catalog=POS;Integrated Security=False;User Id=sa;Password=sql2008;Connection Timeout=1;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" /> 

ここに私のweb.configファイルでは、クライアントシステムのデータベース

にサーバシステムのデータベースから製品をコピーする必要がありますエラーのようなエラー MSDTCのサーバー 'CLIENT-PC \ SQLEXPRESS2008'は使用できません。

サーバーの分散トランザクションコーディネーターのアドレスをサーバーから取得できません。 DTCはサーバーで有効になっていますか?私はそれをGoogleと次の詳細に

  1. を見つけてきた

    は、サービスにアクセスしてください。 (START> SETTINGS> CONTROL PANEL>管理ツール>サービス)

  2. 「Distributed Transaction Coordinator」と呼ばれるサービスを見つけて右クリックして、「開始」>「開始」を選択します。
  3. は、このサービスが永久

私は上記の手順、サーバーとクライアントの両方を行っている。この問題を解決するために自動的に実行するようにします。

しかし、それでも、2つ(またはそれ以上)のSQLサーバはtransactionnaly「同期」であるためには

+0

https://stackoverflow.com/questions/29414250/msdtc-on-server-server-is-unavailable –

+0

ですあなたは同じエラーを取得していますか? –

答えて

1

は、私が思うにエラーを持っている、あなたは、MSDTCサービスがトランザクションに関する多くのものを担当しているように、ネットワークDTCを設定する必要があります。 ..(あなたのクライアントはサーバーのものを使うべきです)。

。これを行うには:

  • タイプDCOMCNFGを実行で...
  • オープンコンポーネントサービスを|コンピュータ
  • 右必ず両方に MSDTC on server 'server is unavailable でmentionned手順を追った「ローカルコンピュータ」をクリックして、
  • チェックを外し、サーバー名(またはIP)に現地コーディネーターとタイプを使用MSDTC]タブに移動します
  • 作りますクライアントとサーバー。

実際にはうまくいくとは思いませんが、そうしなければそれはできないでしょうか。あなたがそのdatabase.itのオブジェクトを作成し使用するデータベース

0

は簡単です

enter code here 
SqlConnection connection1 = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DBConnection"].ConnectionString(); 

enter code here 
SqlConnection connection1 = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DBConnection1"].ConnectionString 
関連する問題