- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
更新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/
在为 Web 应用程序用例图建模时,为用户可以拥有的每个角色创建一个角色是否更好?或拥有一个角色、用户和一个具有特权的矩阵? guest < 用户 < 版主 < 管理员 1: guest 、用户、版主
我无法使用 Elixir 连接到 Postgres: ** (Mix) The database for PhoenixChat.Repo couldn't be created: FATAL 28P
这个问题已经有答案了: Group by field name in Java (7 个回答) 已关闭 7 年前。 我必须编写一个需要 List 的方法并返回 Map> . User包含 Person
感谢您的帮助,首先我将显示代码: $dotaz = "Select * from customers JOIN contracts where customers.user_id ='".$_SESS
我只想向所有用户中的一个用户显示一个按钮。我尝试了 orderByKey() 但没有成功! 用户模型有 id 成员,我尝试使用 orderByChild("id") 但结果相同! 我什至尝试了以下技巧
我们在工作中从 MongoDB 切换到 Postgres,我正在建立一个 BDR 组。 在这一步,我正在考虑安全性并尽可能锁定。因此,我希望设置一个 replication 用户(角色)并让 BDR
export class UserListComponent implements OnInit{ users; constructor(private userService: UserS
我可以使用 Sonata User Bundle 将 FOS 包集成到 sonata Admin 包中。我的登录功能正常。现在我想添加 FOSUserBundle 中的更改密码等功能到 sonata
在 LinkedIn 中创建新应用程序时,我得到 4 个单独的代码: API key 秘钥 OAuth 用户 token OAuth 用户密码 我在 OAuth 流程中使用前两个。 的目的是什么?最后
所以..我几乎解决了所有问题。但现在我要处理另一个问题。我使用了这个连接字符串: SqlConnection con = new SqlConnection(@"Data Source=.\SQLEX
我有一组“用户”和一组“订单”。我想列出每个 user_id 的所有 order_id。 var users = { 0: { user_id: 111, us
我已经为我的Django应用创建了一个用户模型 class User(Model): """ The Authentication model. This contains the u
我被这个问题困住了,找不到解决方案。寻找一些方向。我正在用 laravel 开发一个新的项目,目前正致力于用户认证。我正在使用 Laravels 5.8 身份验证模块。 对密码恢复 View 做了一些
安装后我正在使用ansible配置几台计算机。 为此,我在机器上本地运行 ansible。安装中的“主要”用户通常具有不同的名称。我想将该用户用于诸如 become_user 之类的变量. “主要”用
我正在尝试制作一个运行 syncdb 的批处理文件来创建一个数据库文件,然后使用用户名“admin”和密码“admin”创建一个 super 用户。 到目前为止我的代码: python manage.
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 6 年前。 Improv
我已在 Azure 数据库服务器上设置异地复制。 服务器上运行的数据库之一具有我通过 SSMS 创建的登录名和用户: https://learn.microsoft.com/en-us/azure/s
我有一个 ionic 2 应用程序,正在使用 native FB Login 来检索名称/图片并将其保存到 NativeStorage。流程是我打开WelcomePage、登录并保存数据。从那里,na
这是我的用户身份验证方法: def user_login(request): if request.method == 'POST': username = request.P
我试图获取来自特定用户的所有推文,但是当我迭代在模板中抛出推文时,我得到“User”对象不可迭代 观看次数 tweets = User.objects.get(username__iexact='us
我是一名优秀的程序员,十分优秀!