sql-server - 如何在Azure中备份和维护SQL Server表?

标签 sql-server azure database-design etl

我在 Azure ADF 中创建了一个管道,它执行 ETL 以在 Azure 存储容器中生成 15GB 干净文件“Final_Data_2023.csv”,并且该干净文件将被复制到 SQL Server 表 dbo.Final_Table 中。

此过程每个月都会发生,下个月我们将再次准备 Final_Data_2023.csv 干净文件。我需要截断 dbo.Final_Table 并再次将新数据插入其中。但我担心我的新数据具有完全错误的值,为了快速修复,我需要将旧的 Final_Data_2023.csv 放在表 dbo.Final_Table 中。由于我截断了表中的所有数据,因此无法将其恢复。

我应该如何设计我的架构,以便我可以快速访问或维护上个月的表并在出现问题时恢复它?

这不一定是一个小解决方法。

最佳答案

Azure存储容器主要用于存储海量数据。因此,您可以设计一个管道将所有备份数据存储在容器中,并仅将最新文件复制到 SQL Server 表中。

方法:

  • 您可以在复制到 Azure 存储容器时存储文件名和日期。
  • 将同一文件从容器复制到数据库。

以下是详细步骤。

  • 使用设置变量事件将文件名和当前日期存储在变量中。 @concat(substring(utcnow(),0,10),'_filename.csv') enter image description here

  • 添加复制事件以将数据从 SQL Server 复制到存储容器。

  • 在复制事件中,您可以获取源数据集,并在接收数据集中创建文件名参数。

enter image description here

  • 在文件路径中添加参数@dataset().fileName,如下图所示。 enter image description here

  • 在Sink数据集中,将变量值传递给数据集参数。

enter image description here

  • 添加另一个复制事件以从容器复制到数据库,并保留复制事件 1 中使用的相同源数据集,并在数据集参数中传递变量。

enter image description here

  • 在接收器数据集中,提供 SQL Server 的数据集。

通过这种方式,您可以将备份数据存储在azure容器中,并将新的干净文件复制到数据库中。如果需要回滚到以前版本的文件,我们可以从容器中复制这些数据。

关于sql-server - 如何在Azure中备份和维护SQL Server表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75444294/

相关文章:

azure - 将 Azure RM 值放入变量中

sql - 在 SQL 数据库中更快地访问拆分表和 JOIN 还是保留一些单片表更好?

sql-server - 必须声明标量变量

php - 使用 SUM 和 Group By 连接 2 个表

sql - SQL 如何计算作业计划的 NEXT_RUN_DATE?

sql-server - 为什么合并复制在设置表的 LOCK_ESCALATION 时会失败?

azure - 没有 www 的域无法工作,但有 www 的域可以在 Azure 上工作

bash - Bicep 文件中的部署后 bash 脚本不执行

sql-server - 在这种情况下,为了速度而牺牲数据库设计基础知识是否正确?

c# - 一个库支持多个数据库