我在C#和数据库MS SQL server 2008 Express
中创建了一个Windows窗体应用程序,并使用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数据库中的不同客户端插入数据的文章,请告诉我。
感谢。
答案 0 :(得分:1)
这就是数据库服务器 DOES :“同时从不同客户端插入数据”。
您可以做的一件事是考虑“交易”:
您可以(而且应该!)做的另一件事是确保尽可能多地在服务器上完成工作,使用“存储过程”:
您还应该检查SQL Server错误日志,尤其是潜在的死锁。您可以在SSMS GUI中或SQL Server安装下的“logs”目录中查看这些内容。
但 FIRST 你需要做的是确切地确定发生了什么。既然你只有MSSQL Express(不是生产使用的好选择!),也许最简单的方法是创建一个“日志”表:在“log”中插入一个条目你在真实表中插入一行的时间,看看是否有“缺失”(即你在日志表中的数据比数据表多)。