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

One or multiple database users for SQLServer access

我开发了一个 "CRM-like" .Net 软件,它访问 Microsoft SQLServer Express 以从多个客户端存储数据。数据量很低(想想一个网络中最多 8 个人,一天中偶尔输入 5 到 10 个条目)。 直到现在——没有多想——我总是创建一个单一的用户,用一个单一的登录名(和相应的密码)从任何客户端登录。这似乎工作正常,也适用于并发访问。

现在出现了一个问题,一位客户在 一次重新启动 计算机后,软件似乎丢失了保存的数据 - 让我们称之为 "entries" - 从 上次 session,只是为了他们到 下一次重启 之后的 "magically appear again"。奇怪的是,我的软件在单笔交易中节省了 entry-for-entry,而且我这边没有记录任何错误。所有条目都从客户端软件中消失了——即在第一次重启时不能 read/were 不在数据库中——并且所有条目在下一次重启时再次出现——即。在数据库中,可以读取。 用户报告的一件事是,她突然关闭了她的机器(顺便托管服务器的那台),而另一个客户端仍然连接。该客户报告没有丢失条目。

很抱歉缺乏详细信息和 low-fi 问题的技术描述,但我现在无法访问 Express Server 的日志文件 - 如果有的话 - 而且我绝对不会非常 SQLServer-savvy.

但我现在的问题是:这是否与两个客户端通过同一用户和登录分别独立连接这一事实有任何关联? 每个客户有单独的用户(登录名?)更好吗?不这样做甚至是错误的吗?还是这不是任何问题的原因(那我就不会经历创建单独用户的麻烦)。

如果您是 运行 服务器上的应用程序,则无需多次登录。只有一个登录名,用于应用程序。应用程序负责数据访问。如果您能向我们展示保存数据的代码,那么解决问题就会容易得多。您是使用 SQL 命令保存数据还是 EntityFramework?

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

您如何连接到 SQL?某些 ORM,例如 nHibernate,可以在事务提交之前向当前用户显示事务而不向其他用户显示。

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