【问题标题】:SQL Server Local and Public DatabaseSQL Server 本地和公共数据库
【发布时间】:2018-04-06 17:15:58
【问题描述】:

我们遇到了需要您的专业知识的情况。我们公司是一家小型咨询公司,我们一直在使用我们内部的 ERP 系统(由 Classic ASP 和 SQL Server 开发),它仍然运行良好。

现在我们想建立外部(公共)网站来与客户就工作/案例状态进行沟通。当然,外部公共站点将使用更新的编程语言,如 ASP.NET 或 PHP。管理团队不想将我们在当前 SQL 服务器上的敏感数据暴露给全世界,他们担心被黑客入侵……等等。

有两种选择:

  • (1) 在云端托管新网站(例如 Microsoft Azure)
  • (2)搭建自己独立的外网发布web 和数据库服务器(昂贵的路由)。

IT 团队倾向于在云上托管新的公共站点,并以某种方式在云和本地 SQL 数据库之间同步数据。由于云数据库和本地数据库不在同一个网络中,我(作为软件开发人员)担心我将无法执行很多事情。例如:

  • 当客户登录外部站点并创建案例时,我该如何 立即在我们当前的本地 SQL 数据库中创建新的案例记录?

  • 当员工创建/更新案例状态时,我们的 本地数据库,它如何触发创建/更新公共记录 数据库?

  • 如果我有自动化脚本来批量同步、导出、导入, 更新、创建……那个在计划任务里,会不会有大问题 因为云和本地是不同的网络。

我们将不胜感激任何建议或替代解决方案。

【问题讨论】:

    标签: sql-server azure-sql-database hosting


    【解决方案1】:

    您可以使用 Azure SQL 数据同步双向同步来保持云数据库和本地数据库的同步。这样,当客户在您的外部站点上创建案例时,所有相关记录都将以您想要的延迟和频率复制到本地数据库(成员数据库)。当您的本地数据库中更新案例时也会发生同样的情况,所有相关记录都将复制到您的云数据库(中心数据库)。

    您无需创建自己的脚本即可进行同步。 SQL Data Sync 会处理这个问题。要开始使用 SQL 数据同步,请访问 this 文档。

    【讨论】:

    • 感谢您的建议。我将研究 SQL 数据同步。我担心的是,如果客户和员工同时创建一个案例(两个不同的客户记录),我假设云数据库和本地数据库将生成下一个相同的 IdentityID(主键),这是否会打破双-定向同步?事件如果合并相同ID的记录,一条记录将被省略对吗?请指教。
    • SQL 数据同步有 2 个冲突解决策略:Hub Wins - 保留写入集线器的第一行更改。随后对集线器中同一行的写入尝试将被忽略。因此,对集线器的第一次写入在同步结束时传播到所有成员数据库。 /// 客户端获胜 - 客户端数据库中更改的每一行都写入集线器,覆盖之前对同一行的更改。因此,对集线器的最后一次写入在同步结束时传播到所有成员数据库。
    猜你喜欢
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 2010-09-27
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多