繁体   English   中英

使用 Azure SQL-db 安排 SQL 查询以将数据从一个表移动到另一个表

[英]Schedule a SQL-query to move data from one table to another with Azure SQL-db

我有一个简单的查询,它从一个表中获取旧数据并将数据插入到另一个表中进行归档。

DELETE FROM Events
OUTPUT DELETED.*
INTO ArchiveEvents
WHERE GETDATE()-90 > Events.event_time

我希望这个查询每天运行一次。

据我目前了解,使用 Azure SQL-db 时没有 SQL 服务器代理。 因此 SQL 服务器代理似乎不是这里的解决方案。

使用 Azure SQL-db 的最简单/最佳解决方案是什么?

有多种方法可以在 Azure SQL 数据库上运行自动化脚本,如下所示:

  1. 使用自动化帐户运行手册。
  2. 在 Azure 中使用弹性数据库作业
  3. 使用 Azure 数据工厂。

由于您只运行一个脚本,我建议您查看自动化帐户运行手册。 作为下面的示例,一个 PowerShell Runbook 来执行该语句。

$database = @{
'ServerInstance' = 'servername.database.windows.net'
'Database' = 'databasename' 
'Username' = 'uname'
'Password' = 'password'
'Query' = 'DELETE FROM Events OUTPUT DELETED.* INTO archieveevents'    
}
Invoke -Sqlcmd @database

然后,可以根据需要进行调度:

在此处输入图像描述

您部分地要求将 Elastic Jobs 与 Runbook 进行比较。

  • Elastic Jobs 还将运行一个预先确定的 SQL 脚本
    服务器/数据库的目标集。
    -Elastic jobs是Azure SQL Azure SQL工程师内部搭建的,所以技术支持Azure SQL同级别。
  • 弹性作业可以完全通过 PowerShell 个脚本来定义和管理。 但是,它们还支持通过 TSQL 进行设置/配置。
  • 如果你想以多个数据库为目标,弹性作业会很方便,因为你只需设置一次作业,然后设置目标,它就会立即在所有地方运行。 如果您在给定服务器上有许多数据库是很好的目标,您只需要指定目标
    服务器,并且服务器上的所有数据库都是自动定位的。
  • 如果您要从给定服务器添加/删除数据库,并希望让作业动态调整以适应此更改,弹性作业旨在无缝地执行此操作。 您只需将作业配置到服务器,每次运行时,它都会针对服务器上的所有(非排除)数据库。

作为参考,我是一名在此领域工作的 Microsoft 员工。

我在博客系列中写了一个演练和更全面的弹性工作解释。 这是该系列的入口点链接: https://techcommunity.microsoft.com/t5/azure-sql/elastic-jobs-in-azure-sql-database-what-and-why/ba-p/ 1177902

您可以使用 Azure 数据工厂,创建一个管道来执行 SQL 查询并触发它每天运行。 Azure 数据工厂用于从 Azure SQL 或其他存储中移动和转换数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM