0

C#でWindowsフォームアプリケーションとデータベースを作成し、クエリをMS SQL server 2008 Express使用LINQ-to-SQLしてデータを挿入および編集しました。

データベースは、。を使用してサーバーに格納されますWindows Server 2008 R2 (standard edition)。現在、5つの異なるコンピューターでアプリケーションを実行しており、ユーザーはActiveDirectoryを介して認証されています。

私に報告された苦情の1つは、異なるデータを入力して送信すると、アプリケーションを含むリストに同じデータが表示されない場合があるというものでした。try catchブロックを使用してエラーを送信しましたが、アプリケーションにエラーが表示されません。しかし、データは単に消えます。

テーブルレコードのIDは、整数の自動インクリメントです。入力した登録番号を伝える必要があるため、次のコードを使用します。

try{
    ConectionDataContext db = new ConectionDataContext();
    Table_Registers tr = new Table_Registers();
    tr.Name=textbox1.text;
    tr.sector=textbox2.text;
    db.Table_Registers.InsertOnSubmit(tr);
    db.SubmitChanges();
    int numberRegister=tr.NumberRegister;
    MessageBox.Show(tr.ToString());
}
catch{Exception e}

私が何か間違ったことをしているのか、MSSQL Serverデータベースにさまざまなクライアントからのデータを挿入する方法を説明しているWeb上の記事を知っているのか、私に知らせてください。

ありがとう。

4

1 に答える 1

1

これがデータベースサーバーの機能です。「異なるクライアントから同時にデータを挿入する」。

できることの1つは、「トランザクション」を検討することです。

あなたができる(そしてすべきである)もう一つのことは、「ストアドプロシージャ」を使用して、サーバー上で可能な限り多くの作業が行われることを保証することです。

特にデッドロックの可能性については、SQLServerのエラーログも確認する必要があります。これらは、SSMS GUI、またはSQLServerインストールの下の「logs」ディレクトリで確認できます。

しかし、最初に行う必要があるのは、何が起こっているのかを正確に判断することです。MSSQL Expressしか持っていないので(これは本番環境での使用には適していません!)、おそらく最も簡単なアプローチは「ログ」テーブルを作成することです。行を挿入するたびに「ログ」にエントリを挿入します。実際のテーブルで、ものが「欠落」していないかどうかを確認します(つまり、ログテーブルにはデータテーブルよりも多くの全体があります)。

于 2012-06-16T02:47:32.637 に答える