2012-06-16 42 views
0

我在C#中創建了一個Windows窗體應用程序,並使用了數據庫MS SQL server 2008 Express,並使用LINQ-to-SQL查詢來插入和編輯數據。同時從不同的客戶端插入不同的數據

該數據庫位於服務器上,其服務器地址爲Windows Server 2008 R2 (standard edition)。現在我的應用程序在五臺不同的計算機上運行,​​用戶通過活動目錄進行身份驗證。

向我報告的一個投訴是,有時當輸入和提交不同的數據時,相同的數據不會出現在包含應用程序的列表中。我使用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數據庫中插入來自不同客戶端的數據,請告訴我。

謝謝。

回答

1

這就是數據庫服務器DOES:「從不同客戶端同時插入數據」。

一兩件事你可以做的是考慮「交易」:

另一件事,你可以(也應該!)做的是確保儘可能多的工作,儘可能是在做服務器,通過使用 「存儲過程」:

您還應該檢查SQL Server錯誤日誌,特別是對於潛在的死鎖。您可以在SSMS GUI中或SQL Server安裝下的「logs」目錄中看到這些信息。

但是FIRST你需要做的是確定究竟發生了什麼。由於您只有MSSQL Express(而不是是生產使用的不錯選擇!),最簡單的方法可能是創建一個「日誌」表:每次插入行時在「日誌」中插入一個條目在真正的表中,看看東西是否「丟失」(即你的日誌表中有更多的實體比數據表)。

+0

謝謝我會按照你的建議 – WizardDBA