Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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 如何使用ADF将数据从本地数据库迁移到Azure托管数据库?_Sql Server_Azure_Azure Sql Database_Azure Data Factory - Fatal编程技术网

Sql server 如何使用ADF将数据从本地数据库迁移到Azure托管数据库?

Sql server 如何使用ADF将数据从本地数据库迁移到Azure托管数据库?,sql-server,azure,azure-sql-database,azure-data-factory,Sql Server,Azure,Azure Sql Database,Azure Data Factory,这个问题看起来相当简单,但就我而言,它涉及到一些复杂的问题。这就是交易: 有一个本地托管的sql数据库和一个sql Azure托管的数据库。我们需要使两个数据库保持同步。这些数据库包含50个表 Azure数据库不会被任何应用程序更新,但本地数据库将继续频繁更新。因此,我们需要将本地数据库中修改/插入的数据移动到Azure数据库。我们正在为此使用Azure数据工厂(ADF) 所有数据库表都包含一个名为LastModifiedDate的列,指示记录修改的时间 目前,我们已经创建了对应于所有50个表

这个问题看起来相当简单,但就我而言,它涉及到一些复杂的问题。这就是交易:

  • 有一个本地托管的sql数据库和一个sql Azure托管的数据库。我们需要使两个数据库保持同步。这些数据库包含50个表
  • Azure数据库不会被任何应用程序更新,但本地数据库将继续频繁更新。因此,我们需要将本地数据库中修改/插入的数据移动到Azure数据库。我们正在为此使用Azure数据工厂(ADF)

  • 所有数据库表都包含一个名为LastModifiedDate的列,指示记录修改的时间

  • 目前,我们已经创建了对应于所有50个表的临时表。我们正在维护一个水印表,其中包含表名及其最高的LastModifiedDate
  • ADF作业中有一个活动,它执行存储过程,该过程从水印表中具有LastModifiedDate>对应LastModifiedDate的所有表中获取记录,并将它们转储到临时表中
  • 当此存储过程的执行完成时,来自临时表的所有数据将与Azure数据库表同步。最后更新水印表 每个表的LastModifiedDate。然后刷新所有暂存表
  • 这个过程将定期重复,这样每当来自本地的数据更新时,Azure数据库也将更新
当前方法的问题:

创建与每个表对应的临时表看起来不是一个好主意。若数据库中的表数量增加,那个么我们需要那个些对应的暂存表

问题:

有没有更好的方法来处理这种情况使用ADF而不创建大量的临时表?

您可以尝试改用,使SQL数据只在一个方向上同步,从内部部署到Azure SQL数据库。配置SQL数据同步时,请在“同步方向”上选择“到集线器”,如下图所示

您可以尝试改用,并使SQL数据只在一个方向上同步,从内部部署到Azure SQL数据库。配置SQL数据同步时,请在“同步方向”上选择“到集线器”,如下图所示


像一次性迁移还是连续迁移?它是连续迁移Data Factory不是最适合您的用例的工具。听起来事务性复制会更好,例如使用SQL数据同步。ADF适合集成,但它不是数据库复制工具。如果您坚持使用ADF,您将需要维护大量样板代码。这可以通过自动化代码生成变得更容易。还请注意,使用ADF,您将永远无法实时复制到Azure.hi-最好使用Azure函数执行此操作,调用相同的存储过程,但这次将更新的数据放入cosmos db,然后,您可以使用cosmos中的change feed处理器跟踪更改,然后基于cosmos db填充/复制您的Azure SQL,或者完全废弃Azure SQL,只使用cosmos db作为您的在线源。例如,一次性迁移或连续迁移?这是连续迁移Data Factory不是最适合您的用例的工具。听起来事务性复制会更好,例如使用SQL数据同步。ADF适合集成,但它不是数据库复制工具。如果您坚持使用ADF,您将需要维护大量样板代码。这可以通过自动化代码生成变得更容易。还请注意,使用ADF,您将永远无法实时复制到Azure.hi-最好使用Azure函数执行此操作,调用相同的存储过程,但这次将更新的数据放入cosmos db,然后可以使用cosmos中的更改源处理器来跟踪更改,然后基于cosmos db填充/复制您的Azure SQL,或者完全放弃Azure SQL,只使用cosmos db作为您的在线源。抱歉,忘了提及一件事,我们不允许使用除ADFSorry之外的任何东西,忘了提一件事,我们不允许使用ADF以外的任何东西