一个或多个用于SQLServer访问的数据库用户

问题描述:

我开发了一个“类CRM”的.Net软件,用于访问Microsoft SQLServer Express以从多个客户端存储数据。数据量很低(一个网络中最多可以有8个人,一天中有5到10个条目)。 到目前为止 - 没有多少考虑 - 我一直创建一个单一的用户与单一登录(和相应的密码)从任何客户端登录。这似乎工作正常,也为并发访问。一个或多个用于SQLServer访问的数据库用户

现在,一个问题也随之而来,其中一个客户端她的计算机的一个重启后,软件似乎已经失去了保存的数据 - 我们姑且称之为“项” - 从上届会议,只是他们在下次重启之后“再次奇迹般地出现”。奇怪的是,我的软件在单个事务中保存了输入条目,并且在我的末尾没有记录错误。所有条目都从客户端软件中消失 - 即在第一次重新启动时不能被读取/不在数据库中 - 并且所有条目在下次重新启动时都会再次出现 - 即。在数据库中,可以读取。 用户报告的一件事是,她偶然关闭了她的机器(偶然地托管服务器的机器),而另一个客户机仍然连接。该客户报告没有丢失的条目。

对不起,由于缺乏对这个问题的详细信息和低保真技术描述,但我现在无法从Express服务器访问日志文件 - 如果有的话 - 我绝对不是SQLServer的 - 精明。

但我现在的问题是:这可以以任何方式连接到两个客户端通过相同的用户和登录分别独立连接的事实? 每个客户最好是有单独的用户(登录?)吗?它是不是错了?或者这可能不是任何问题的原因(然后我不会经历创建单独用户的麻烦)。

+0

我不明白这是如何连接到使用相同连接凭证的用户。 你试过复制这个问题吗? 你确定数据不在数据库中吗?奇怪的是,一个入口丢失,然后奇迹般地再现。 –

+0

它现在在数据库中!我正在谈论**三个**单独的会议。以我的解释出现在这里:在我看来,就像**第一次会议的“日记”**在某种程度上还没有完成(这很奇怪,因为我把单个保存操作放在单独的事务中),而是与**第二次会议**的最新变化一起进行汇编,因此仅在第三次会议中出现**所有来自第一次会议和第二次会议的变化都是“可见的”,意味着它们已经从数据库中成功加载(第三)会议开始。 – themightylc

如果您在服务器上运行应用程序,则不需要连接多个登录名。只有一个登录,这是应用程序。应用程序负责数据访问。如果你能向我们展示保存数据的代码,解决这个问题就容易多了。您是否使用SQL命令来保存数据或EntityFramework?

注意:在数据库上提交事务后,它将永远不会从数据库中删除。所以检查你的代码。它可能根本没有提交到数据库。

+1

这是我目前正在寻找的答案。我会检查我的代码。我使用System.Data.SQL并使用字符串资源自己构建SQL命令。我试图让我的所有命令和连接都在使用块中,这就是为什么我不明白事务不能如何提交,但当然可能很容易出现疏漏。但这是另一个问题。 – themightylc

你如何连接到SQL?一些ORM,比如nHibernate,可以将事务显示给当前用户,而不是其他用户,直到提交。

没有理由对这么少的用户使用单独的连接。这听起来像是一个代码问题,而不是连接问题。