从不同的客户端同时插入不同的数据

本文关键字:数据 插入 客户端 | 更新日期: 2023-09-27 18:37:19

我用 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 数据库中插入来自不同客户端的数据,请告诉我。

谢谢。

从不同的客户端同时插入不同的数据

这就是数据库服务器的作用:"同时插入来自不同客户端的数据"。

您可以做的一件事是考虑"交易":

  • http://www.sqlteam.com/article/introduction-to-transactions

您可以(并且应该!)做的另一件事是通过使用"存储过程"来确保在服务器上完成尽可能多的工作:

  • http://www.sql-server-performance.com/2003/stored-procedures-basics/

还应检查 SQL Server 错误日志,尤其是潜在的死锁。 可以在 SSMS GUI 或 SQL Server 安装下的"日志"目录中看到这些内容。

但你需要做的一件事是确定到底发生了什么。 由于您只有MSSQL Express(这对于生产用途来说是一个好的选择!),也许最简单的方法是创建一个"日志"表:每次在实际表中插入一行时,在"日志"中插入一个条目,并查看内容是否"丢失"(即日志表中的条目比数据表中的条目多)。