C# 持续同步本地数据库还是直接从服务器数据库获取数据更好?

C# 持续同步本地数据库还是直接从服务器数据库获取数据更好?,c#,sql-server-2008,client-server,sync,desktop-application,C#,Sql Server 2008,Client Server,Sync,Desktop Application,我有一台带有db sql server的服务器,在客户机上,每台服务器都有本地db sql server和一个C桌面应用程序。 现在,我有多个客户机运行应用程序来显示记录,并将记录标记为所示,服务器数据库不断变化。客户机通过无线网络与服务器进行通信,无线网络有时会被丢弃。 这是一个参加活动的系统。在活动开始之前,我们已经在服务器数据库中预先注册了来宾,在本地数据库中也是如此。在活动日,人们会参加活动,但如果不在服务器数据库中注册,就无法绕过活动,因此只能向服务器数据库中添加新的人员。客户只需将笔

我有一台带有db sql server的服务器,在客户机上,每台服务器都有本地db sql server和一个C桌面应用程序。 现在,我有多个客户机运行应用程序来显示记录,并将记录标记为所示,服务器数据库不断变化。客户机通过无线网络与服务器进行通信,无线网络有时会被丢弃。 这是一个参加活动的系统。在活动开始之前,我们已经在服务器数据库中预先注册了来宾,在本地数据库中也是如此。在活动日,人们会参加活动,但如果不在服务器数据库中注册,就无法绕过活动,因此只能向服务器数据库中添加新的人员。客户只需将笔记本放在活动地点的门上,每位客人在服务器注册后即可通过其卡进行扫描。客户扫描卡片,从服务器获取卡片信息,并标记他的出勤情况。他每次进来都是这样。每一次的出席人数都有记录 所以问题是: 案例1:我现在正在做的是,在客户端上,应用程序首先查找服务器可用性,如果找到,则从服务器数据库获取数据,并在服务器数据库上标记为readback,不涉及本地数据库。当连接失败时,应用程序将连接到本地数据库并在那里搜索记录,并在本地数据库中将其标记为已读。本地数据库可以手动同步,方法是确保将标记“在本地数据库上读取”发送到服务器数据库,并将来自服务器的新记录提取到本地数据库中。 案例2:这种情况下,我从不查找服务器,只查找每个记录的本地数据库,并将标记保存为本地数据库上的read。手动同步操作可以是自动的,方法是编写存储过程和作业,这些存储过程和作业在服务器数据库和本地数据库上运行,只要数据库在任意一侧发生更改,就会在这两个数据库之间执行同步。
哪种方法在性能和可靠性方面更好。或者您有第三种情况吗?

当服务器处于联机状态时,两个客户端对相同的数据进行更改,并且当服务器处于脱机状态时,它们都同步时,您在做什么?您的服务器经常脱机吗?为什么需要有本地数据库?大多数解决方案只有服务器数据库。不,服务器从不脱机,但服务器和客户端之间通过无线的连接可能会中断,在这种情况下,应用程序无法连接到服务器。如果我不在客户端机器上使用本地数据库,那么在网络恢复运行之前(比如15分钟),该机器将是无用的,因此用户同步的本地数据库(比如5分钟前)仍然可以显示来自本地数据库的记录,并将标记另存为本地数据库上的读取,并且一旦网络出现,它会将更改标记推回到服务器数据库。我知道在这5分钟内插入服务器数据库的记录不会显示在我看来,这两种情况的结合可能对您有好处-当服务器可用时,使用它,但将数据存储在本地数据库中,因为您的应用程序中已经有了这些记录。每小时/天/周/客户端启动/…取决于数据量和更改频率,将本地数据库与服务器同步。您的意思是,当服务器可用时,客户端将通过网络从服务器数据库中选择行,并在本地数据库中标记为读取时间戳?实际上,标记为readtime stamp被插入到带有记录主键和时间戳的单独表中。所以,如果我通过网络从服务器数据库中选择行,为什么要将其保存在本地数据库中呢?它不也应该在服务器数据库上标记时间戳吗。请注意,数据可能每30秒或每分钟更改一次。所以我必须经常更新本地数据库sqldependency?,问题是我不知道你的应用程序做什么。本地数据库和服务器数据库中的数据是否相同?我把它想象成服务器数据库中的图书列表。客户端想要查看它,所以他从服务器数据库请求它。它还将其立即存储到本地数据库中。所以下一次客户想要查看书籍,而服务器不可用时,他可以。