gpt4 book ai didi

delphi - 如何将多个用户的Access数据库迁移到一个SQL Server数据库

转载 作者:行者123 更新时间:2023-12-02 16:07:00 25 4
gpt4 key购买 nike

更新2010-11-25

遗留的独立应用程序(A1)正在重新创建为Web应用程序(A2)。

A1用Delphi 7编写,并使用MS Access数据库存储数据。 A1已分发给大约1000个活动用户,我们在A2构建期间无法控制它们。

该数据库有约50个表,一些包含用户数据,一些包含模板数据(不需要复制);这些用户表中的3-4个较大(<5000个记录),其余较小(<100个)。

一旦A2处于“活动状态”,A1的用户应该能够迁移到A2。我正在寻找方案的比较。

一种选择是为这些用户开发一个独立的“更新”工具,并使该更新工具通过Web服务与A2数据库对话。

另一个选择是允许用户将他们的Access db(〜15 MB)数据库上载到我们的服务器,运行某种SSIS包(也许隔夜),以将该用户的数据库获取到A2中,然后再删除Access db。

我是否缺少选项?哪个选项是“最佳”的(我理解这可能有点主观,但希望至少可以弄清楚该方案的优缺点)。

如果需要,我将很高兴将其作为社区Wiki。

更新2010-11-23:建议方案1的一种变体是使更新工具/应用程序直接与生产数据库对话。这可行吗?

2011-11更新:目前,该产品已投入生产。用户上传.mdb所在的.zip文件,该文件已解压缩并放置在安全的位置。每天进行一次SSIS计划的作业,并将数据移至暂存表,然后通过SP将其移至生产环境。

最佳答案

我倾向于上载完整的数据库并在服务器上运行转换。

无论哪种情况,您都需要编写一个转换程序。真正的问题是您在客户计算机上部署并运行了多少转换。我会尽量简化这一部分,即只是上传。这样,如果在转换期间发现任何错误或意外数据,则只需更新服务器即可,而无需重新部署转换程序。

您正在谈论的数据总量不太大,无法上传,听起来在任何情况下都需要上传其中的大部分数据。

如果在本地安装转换程序,则需要一种方法来从部分停止的转换中恢复。这比简单地重新启动访问数据库的上载要复杂得多。

另外,您也不表示转换完成后将不需要Web服务。将这些服务放在一起,并在转换期间保持它们的运行和安全的工作将远远超过简单的上传应用程序或Web表单。

另一个因素是您的客户转换的速度。如果其中一些将在一段时间内运行当前应用程序,则随着服务器数据库随时间的变化,您可能需要更新转换应用程序。如果您上载数据库并在服务器上运行转换,则仅需要更新服务器转换程序。直到更新服务器数据库后,客户才下载转换程序但不运行它不会有任何风险。

我们有一个类似的情况,我们选择在服务器上运行转换。我们建立了一个网页供用户上传文件。在这种情况下,无需为新应用程序部署任何内容。我们发现的唯一弊端是让用户选择正确的文件。如果您使用网络表单进行上传,则由于安全限制,您无法为用户预先选择文件名。在我们的案例中,我们知道文件位于何处,但客户却没有。我们在上传页面上为用户提供指导,以帮助他们。您可以通过编写一个小型桌面应用程序为用户执行上载来避免这种情况。

我看到编写基于服务器的转换的唯一弊端是一些不需要的模板数据将被上传。无论如何,那是少量的数据。

服务器优点:
-由于错误,意外数据或服务器数据库的更改,无需重新部署转换
-更容易保护(可能),只有一个访问点-上传。当然,您以访问数据库的形式接受客户数据,因此您仍然无法信任其中的任何内容。

服务器缺点:
-上传不需要的模板数据

桌面专业人士:
-?我很难提出任何建议

桌面缺点:
-可能需要部署多个版本

对于直接与服务器数据库对话。我有一个直接与托管数据库对话的应用程序,以避免创建Web服务。一切正常,但如果有机会,我将不再走那条路线。定期删除Internet,并且SQL提供程序无法很好地恢复。我们已经培训了客户,让他们在发生这种情况时再试一次。我们这样做是为了避免为桌面应用程序创建Web服务。我们仅在服务器连接字符串中引用IP地址。有完整的安全原因列表,请不要使用此方法-我们对我们的安全设置和可能的风险感到满意。最后,使用未经修改的桌面应用程序的权衡不值得拥有一个不稳定的产品。

关于delphi - 如何将多个用户的Access数据库迁移到一个SQL Server数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4245849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com