Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 将Access 2002应用程序迁移到Access 2019或SQL Server?_Sql Server_Vba_Database_Ms Access - Fatal编程技术网

Sql server 将Access 2002应用程序迁移到Access 2019或SQL Server?

Sql server 将Access 2002应用程序迁移到Access 2019或SQL Server?,sql-server,vba,database,ms-access,Sql Server,Vba,Database,Ms Access,我有一系列Access 2002“前端/后端”应用程序,它们都相互关联。例如,应用程序A将表与应用程序B链接,反之亦然 由于体积大、腐蚀程度高,应用程序处于需要每日压实和修复的阶段。此外,为了使应用程序能够正常工作,我必须使用Access 2002在虚拟环境中进行更改。每次更改应用程序时,我还需要重新安装“Access runtime 2010-32位”,并在每个工作站(Windows 10)上复制Access文件(.mde) @Gustav这是一个临时选项(6个月到18个月),因为客户希望使用

我有一系列Access 2002“前端/后端”应用程序,它们都相互关联。例如,应用程序A将表与应用程序B链接,反之亦然

由于体积大、腐蚀程度高,应用程序处于需要每日压实和修复的阶段。此外,为了使应用程序能够正常工作,我必须使用Access 2002在虚拟环境中进行更改。每次更改应用程序时,我还需要重新安装“Access runtime 2010-32位”,并在每个工作站(Windows 10)上复制Access文件(.mde)

@Gustav这是一个临时选项(6个月到18个月),因为客户希望使用SQL数据库获得完整的解决方案。所研究的解决方案是可配置的,并且已经具有SQL数据库模式

我已经完成了将表单、表、查询和模块传输到Access 365的测试,但VBA代码中有错误。所有业务规则都在VBA代码中编码。我还将表传输到SQL Server 2017,但由于Access 365前端不再使用DAO引擎,我恐怕不得不更改很多VBA代码

事实上,更清楚地说,我想知道是否需要将前端更改为Access,因为这是一个临时解决方案

也许,我应该通过消除大表中的数据历史记录来保护软件。客户做出决定的时间。找到一个“最佳点”,让我可以删除并继续维护它,而不必担心会出现腐败,因为我很难看到迁移到Access 365前端的过程中获得了实质性的收益。你觉得怎么样

我已经建议将新版本中的应用程序和表迁移到Access 2019,甚至迁移到SQL Server上。然而,现在,我必须把申请放在呼吸器上,并继续每天压实,直到做出决定

我想知道,如果知道2 GB访问的总限制,从Access 2002迁移到Access 2019版本是否有好处。知道VBA应用程序和代码使用DAO方法时,他必须迁移到SQL数据库的主要约束是什么

@阿尔伯特·D·卡尔拉尔 我很喜欢你的回答。我应该很快做出决定。 不过,我还有两个问题。也许,你能在这个问题上指导我吗

最近有两件事困扰着这些应用程序的平静

1-由于未知原因,Access应用程序群中的一个应用程序被阻塞了一段时间,出现以下错误“运行时3027:无法更新:数据库或对象为只读”。问题是,一些用户忽略了此错误,继续执行导致数据移动的任务。 我不得不带着备份副本回去,因为有些表没有更新

仔细观察VBA代码中的错误,我注意到它都来自DAO Recordset.Edit方法,该方法包含多个连接的查询

我通过使用DoCmd.RunSQL修改Edit方法并将查询从Select更改为Update查询,成功地解决了这个问题。 然而,整个方法以前工作得非常好。 你能给我解释一下这个错误的原因吗

2-原始开发人员不一定使用最佳实践来设计应用程序(没有自动编号,一些表没有主键,没有外键),因此,如果我迁移到SQL Server数据库,恐怕需要进行新的设计。或者,为了节省时间,因为这个解决方案将在18个月后消失,我应该只复制SQL Server中的错误做法,并祈祷它不会导致更多的故障。你的专业方法是什么


谢谢

可能没有。在Access 2019/365中打开数据库,并将其保存为2007(accdb)格式,然后将其签出

至于发行版,您可以使用脚本和快捷方式使其完全自动化。我的文章对此作了详细解释:

如果您没有帐户,请浏览链接:阅读全文

努力推动以获得将所有共享表移动到SQL Server后端的确认。

以下几点:

要更新您的mde或accDE前端?这是每个工作站的一个简单副本。您不需要每次都重新安装运行时。部署到每个工作站的特定应用程序(mde/accde)之间没有“特殊”连接

换言之:

如果使用VB6编写软件,则需要安装VB6运行时(但只安装一次)。之后,您可以简单地将应用程序复制并部署到每个工作站

如果您再次使用.net编写软件,则必须确保在每台计算机上安装正确的.net framework。完成后,您可以通过向每个工作站发送一个简单的副本来更新您的软件

使用access运行时也是如此。安装后,您只需将任何mde/accDE复制到该工作站,双击它即可运行。因此,运行时不会连接到您复制到工作站的任何特定数据库。一旦安装了运行时,您就可以很容易地为前端编写一些自动更新代码,以“检查”一些版本号,然后复制新更新的前端。有很多方法可以做到这一点-即使是一个简单的批处理文件通常在这里就足够了

因此,在目前几乎所有情况下,您都必须“一次性”安装所需的运行时和支持库。对于.net、旧的VB6程序或Access,情况就是这样

至于将access表数据迁移到SQL server

您应该能够简单地将表数据迁移到SQL server。现在从较旧的access后端t链接应用程序表
Dim strSQL     As String
Dim rst        As DAO.Recordset

strSQL = "select * from tblCustomers where City = 'Edmonton'"

Set rst = CurrentDb.OpenRecordset(strSQL)

' above for SQL server becomes:

Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset, dbSeeChanges)