将弹性作业进程 ID 传递给目标数据库

Pass Elastic Job Process ID to target DB

我正在使用 Azure Elastic Job 进行 SQL 维护活动,例如重建索引、清除数据等

因此,对于多个作业 运行,我想在我的目标数据库中跟踪这些操作。我想根据弹性作业进程 ID 跟踪它们。

我们是否可以通过存储过程捕获弹性作业进程 ID 并将其发送到目标数据库。

请注意,我已经每隔一小时和几周定期创建工作 运行。

Azure Elastic 作业流程详细信息存储在 jobs.job_executions

SELECT * FROM jobs.job_executions 

我们不能使用存储过程或直接查询从跨数据库中获取结果,我们需要配置弹性查询数据库以将Elastic 作业代理table 数据获取到目标数据库table。

您需要配置以下步骤(使用示例语法):

  1. 创建主密钥

    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master_key_password>'; 
    
  2. 创建数据库范围的凭据

    CREATE DATABASE SCOPED CREDENTIAL ABC 
    WITH IDENTITY = '<username>', 
    SECRET = '<password>'; 
    
  3. 创建外部数据源

    CREATE EXTERNAL DATA SOURCE DatasourceName WITH 
    (LOCATION = '<server_name>.database.windows.net', 
    DATABASE_NAME = 'TargetDB’, 
    CREDENTIAL = ABC, 
    ) ; 
    
  4. 创建外部 Table

    CREATE EXTERNAL TABLE [dbo].[job_executions] 
    ( [job_execution_id] nvarchar(256), 
      [Job_name] [nvarchar](256) NOT NULL,  
      …) 
     WITH 
    ( DATA_SOURCE = DatasourceName 
    ) ;
    

定义外部数据源和外部 table 后,您可以查询代理数据库 table 并使用目标数据库中的数据。

更多详情,请访问Cross-Database Query