Sql server 脱机时通过MS Access前端访问SQL Server数据库的选项有哪些

Sql server 脱机时通过MS Access前端访问SQL Server数据库的选项有哪些,sql-server,ms-access,Sql Server,Ms Access,我目前正在研究一个项目提案,该提案要求将多址数据库移动到一个新的MS SQL Server数据库中。其想法是将前端程序保留为MS Access,以便用户熟悉输入数据和创建报告的过程 然而,事情变得复杂起来,因为在调查将要收集的地区,互联网的连通性很差,而且会时不时地中断。我曾想过几种解决这个问题的方法,但都很麻烦: 1) 有一台带有路由器的PC,该路由器以脱机模式存储SQL Server数据库,数据输入PC通过路由器连接到带有脱机数据库的PC。然后,装有SQL Server数据库的PC可以在与i

我目前正在研究一个项目提案,该提案要求将多址数据库移动到一个新的MS SQL Server数据库中。其想法是将前端程序保留为MS Access,以便用户熟悉输入数据和创建报告的过程

然而,事情变得复杂起来,因为在调查将要收集的地区,互联网的连通性很差,而且会时不时地中断。我曾想过几种解决这个问题的方法,但都很麻烦:

1) 有一台带有路由器的PC,该路由器以脱机模式存储SQL Server数据库,数据输入PC通过路由器连接到带有脱机数据库的PC。然后,装有SQL Server数据库的PC可以在与internet连接时备份服务器上的数据库

2) 将数据添加到MS Access数据库,然后这些数据库可以以指定的增量与SQL Server合并(这可能会导致一些问题)

我们以前为类似的项目做过选项1,但从未在脱机模式下连接到SQL Server数据库。然而,这似乎是可行的

我的问题是:有没有人知道一种方法可以将Access用作SQL Server的前端应用程序,并且能够在没有internet连接的情况下更新数据?SQL Server数据库将自动分配主键,因此在同步数据时,重复的唯一值不应成为问题


谢谢你的帮助。我一直很难在谷歌上找到答案,即使在最好的时候,同步到数据库也很复杂。我只是在寻找一个起点,看看是否有更简单的方法来实现这一点。

我会在所有笔记本电脑上运行SQL express的免费编辑。因此Access数据库将成为本地版SQL express的前端。SQL express可以是“主”SQL数据库的订阅服务器。因此,您可以使用SQL复制将SQL server的这些本地版本同步到主服务器。当然,主SQL server不能是SQL server的免费版本。因此,要发布数据库进行复制,您不能使用免费版,但这些免费版肯定可以用作订阅者

这种方法将消除为Access应用程序构建或编写特殊软件的需要。因此,您需要将访问后端(数据表)传统地迁移到sql server,然后在每个笔记本电脑上安装sql express的情况下运行本地访问应用程序。然后,当这些笔记本电脑回到办公室时,您将启动与sql server主版本的同步


另一种可能是采用和使用网络同步框架。这也将允许同步,并将消除在每台机器上运行sql expess的需要。我认为最省力的工作就是将本地版本的sql express与在office中运行的sql server主版本同步(但office版本的sql server不能是免费版本)

我会在所有笔记本电脑上运行SQL express的免费编辑。因此Access数据库将成为本地版SQL express的前端。SQL express可以是“主”SQL数据库的订阅服务器。因此,您可以使用SQL复制将SQL server的这些本地版本同步到主服务器。当然,主SQL server不能是SQL server的免费版本。因此,要发布数据库进行复制,您不能使用免费版,但这些免费版肯定可以用作订阅者

这种方法将消除为Access应用程序构建或编写特殊软件的需要。因此,您需要将访问后端(数据表)传统地迁移到sql server,然后在每个笔记本电脑上安装sql express的情况下运行本地访问应用程序。然后,当这些笔记本电脑回到办公室时,您将启动与sql server主版本的同步


另一种可能是采用和使用网络同步框架。这也将允许同步,并将消除在每台机器上运行sql expess的需要。我认为最省力的工作就是将本地版本的sql express与在office中运行的sql server主版本同步(但office版本的sql server不能是免费版本)

你说得对,这很难。您的选项2可能是access db拥有sql server中所有表的完整副本的最佳选择。您的代码在任何时候访问数据时都必须动态检查连接,如果连接关闭,则读取和写入本地访问数据库,然后在连接打开时尝试同步。如果许多人试图编辑相同的记录,那么您将面临许多数据冲突问题。如果你想保持访问权限作为前端,这是一个非常棘手的问题,没有很多好的解决方案。谢谢Jeremy。我已经考虑过了。我想我可以打开它,这样在没有接入互联网的情况下就无法进行编辑——这只是在添加数据。所以,我不需要担心人们编辑同一张唱片。但是,数据库太大,无法存储在单个数据库中,因此,记录在重新上传后必须删除,这将增加另一层的难度。你是对的,这很困难。您的选项2可能是access db拥有sql server中所有表的完整副本的最佳选择。您的代码在任何时候访问数据时都必须动态检查连接,如果连接关闭,则读取和写入本地访问数据库,然后在连接打开时尝试同步。如果许多人试图编辑相同的记录,那么您将面临许多数据冲突问题。如果你想保持访问权限作为前端,这是一个非常棘手的问题,没有很多好的解决方案。谢谢Jeremy。我已经考虑过了。我想我可以打开它,这样在没有接入互联网的情况下就无法进行编辑——这只是在添加数据。