代码之家  ›  专栏  ›  技术社区  ›  pepr

如何使用外部启动器以独占方式启动SQL用户定义过程,无需事务。exe?

  •  0
  • pepr  · 技术社区  · 3 年前

    我正在将较旧的应用程序从本地“旧而好”的SQL server迁移到Azure SQL。到目前为止,一切顺利。

    旧的解决方案使用Job Agent启动 usp_data_pump 从第三方数据库获取一些数据。第一次运行(清空数据库)大约需要30分钟。由于增加了优化,下一次运行大约需要5秒钟,此时另一个数据库中观察到的数据没有变化。这可能需要更多的时间,但由于数据是如何创建的,仍然需要几秒钟的时间。然而,在某些情况下,我的数据库内容可能会被“重置”(用户操作),然后可能再次需要30分钟左右的时间。

    我需要每5分钟抽取一次数据,以获得微小的变化。

    由于Azure SQL没有作业代理,我决定使用附近的Azure Windows服务器及其标准计划程序来执行 launcher.exe 每5分钟,只要连接到Azure SQL Server,就会执行 usp_数据_泵 存储过程并停止。然而,当调度程序运行时,它会“永远”运行。

    我不确定会发生什么。第一个想法是 发射器。exe 在5分钟后再次启动,之前的任务尚未完成。但是,在计划任务的“设置”选项卡中,选项已设置。。。

    不要启动新实例

    首先,如何实施定期、排他性的执行 usp_数据_泵 程序交易不得在内部使用。

    0 回复  |  直到 3 年前
        1
  •  1
  •   Leon Yue    3 年前

    Azure SQL数据库有两个针对us的自动作业:针对Azure MI的SQL代理和针对Azure SQL数据库的弹性作业。您可以使用弹性作业来执行存储过程。

    参考本文件: Automate management tasks using elastic jobs :

    • 您可以创建并安排可以定期更新的弹性作业 针对一个或多个Azure SQL数据库执行以运行Transact-SQL (T-SQL)查询并执行维护任务。

    弹性工作代理是免费的。作业数据库的计费速率与Azure SQL数据库中的任何数据库相同。

    嗯。