2016-08-01 4 views
0

C#プログラムのさまざまな設定を保存するためのSQLサーバーがあります。プログラムはこれらの設定を定期的にチェックします。私が手動でクエリの設定を変更し、プログラムが同時にそれらを読み込もうとすると、これはエラーを引き起こしますか?つまり、SQLは「マルチタスク」ですか?何もクラッシュしない限り、手動設定の変更がプログラムによる次のチェックまで遅れるかどうかは関係ありません。手動SQLとC#プログラムを使用した同時読み込み/書き込み

+0

いつでも2番目の接続を持つことができます。 – BugFinder

+0

トランザクションを使用するかどうかによって異なります。トランザクションの分離レベルを「READ UNCOMMITED」に設定することができます。この方法では、一方のプロセスは表に書き込む排他権限を持ち、他方は「ダーティ」なデータを読み取ることができます。 – PacoDePaco

答えて

0

すべてのRDBMS(Oracle、MS SQL、Interbaseなどを含む)は、「マルチタスク」と同じです。

:また、RDMSは、特別にのみトリックはあなたが別のタスク、スレッド、電気ショック療法の間 シェア Connectionをすべきでないということである

https://en.wikipedia.org/wiki/ACID

(のdetailesのためのACIDを参照)、このようなモードで動作するように設計されています

Action action1 =() => { 
    using (SqlConnection conn = new SqlConnection(ConnectionStringHere)) { 
     conn.Open(); 

     using (SqlCommand q = new SqlCommand()) { 
     q.Connection = conn; 
     q.CommandText = "update MyTable set x = 123 where y = 789"; 

     q.ExecuteNonQuery(); 
     } 
    } 
    }; 

    Action action2 =() => { 
    using (SqlConnection conn = new SqlConnection(ConnectionStringHere)) { 
     conn.Open(); 

     using (SqlCommand q = new SqlCommand()) { 
     q.Connection = conn; 
     q.CommandText = "delete from MyTable where y = 456"; 

     q.ExecuteNonQuery(); 
     } 
    } 
    }; 

    // Let's call both actions in parallel (simultaneously) 
    Parallel.Invoke(action1, action2); 
関連する問題