エラスティック ジョブの作成、構成、および管理Create, configure, and manage elastic jobs

この記事では、エラスティック ジョブを作成、構成、および管理する方法を学びます。In this article, you will learn how to create, configure, and manage elastic jobs. エラスティック ジョブを使用したことがない場合は、Azure SQL Database でのジョブ自動化の概念を参照してください。If you have not used Elastic jobs, learn more about the job automation concepts in Azure SQL Database.

エージェントの作成と構成Create and configure the agent

  1. S0 以上で、中身が空の SQL データベースを作成または特定します。Create or identify an empty S0 or higher SQL database. このデータベースが、エラスティック ジョブ エージェントの作成時に "ジョブ データベース" として使用されます。This database will be used as the Job database during Elastic Job agent creation.

  2. ポータルまたは PowerShell を使ってエラスティック ジョブ エージェントを作成します。Create an Elastic Job agent in the portal, or with PowerShell.

    エラスティック ジョブ エージェントの作成中

ジョブの作成、実行、および管理Create, run, and manage jobs

  1. PowerShell または T-SQL を使用して、"ジョブ データベース" にジョブ実行のための資格情報を作成します。Create a credential for job execution in the Job database using PowerShell, or T-SQL.

  2. PowerShell または T-SQL を使用して、ターゲット グループ (ジョブの実行の対象とするデータベース) を定義します。Define the target group (the databases you want to run the job against) using PowerShell, or T-SQL.

  3. ジョブを実行するデータベースのそれぞれに、ジョブ エージェントの資格情報を作成 (グループ内の各データベースにユーザー (またはロール) を追加) します。Create a job agent credential in each database the job will run (add the user (or role) to each database in the group). 例については、PowerShell のチュートリアルを参照してください。For an example, see the PowerShell tutorial.

  4. PowerShell または T-SQL を使用してジョブを作成します。Create a job using PowerShell, or T-SQL.

  5. PowerShell または T-SQL を使用してジョブ ステップを追加します。Add job steps using PowerShell or T-SQL.

  6. PowerShell または T-SQL を使用してジョブを実行します。Run a job using PowerShell, or T-SQL.

  7. ポータル、PowerShell、またはT-SQL を使用して、ジョブの実行状態を監視します。Monitor job execution status using the portal, PowerShell, or T-SQL.


ジョブの実行のための資格情報Credentials for running jobs

ジョブはデータベース スコープ資格情報を使用して、実行時にターゲット グループによって指定されたデータベースに接続します。Jobs use database scoped credentials to connect to the databases specified by the target group upon execution. ターゲット グループにサーバーまたはプールが含まれる場合には、利用できるデータベースを列挙するマスター データベースに接続するときに、このデータベース スコープ資格情報が使用されます。If a target group contains servers or pools, these database scoped credentials are used to connect to the master database to enumerate the available databases.

ジョブの実行に必要な資格情報を正しく設定する作業は多少複雑ですので、次のポイントを頭に入れておくようにしてください。Setting up the proper credentials to run a job can be a little confusing, so keep the following points in mind:

  • データベース スコープ資格情報は "ジョブ データベース" に作成する必要があります。The database scoped credentials must be created in the Job database.
  • ターゲット データベースにはいずれも、ジョブが正常に完了するうえで十分なアクセス許可を備えたログインを設定しておく必要があります (以下の図の jobuser)。All target databases must have a login with sufficient permissions for the job to complete successfully (jobuser in the diagram below).
  • 資格情報は複数のジョブで再利用できます。このため、資格情報のパスワードは暗号化のうえ、ジョブ オブジェクトに対する読み取りアクセス許可が認められたユーザーに知られることがないように保護されます。Credentials can be reused across jobs, and the credential passwords are encrypted and secured from users who have read-only access to job objects.

次の図は、ジョブの正しい資格情報を把握し、その設定をサポートすることを意図して用意したものです。The following image is designed to assist in understanding and setting up the proper job credentials. ジョブの実行が必要なデータベースの 1 つひとつ ("ターゲット ユーザー DB" すべて) で、忘れずにユーザーを作成してくださいRemember to create the user in every database (all target user dbs) the job needs to run.

エラスティック ジョブの資格情報

セキュリティのベスト プラクティスSecurity best practices

エラスティック ジョブを使用する際のベスト プラクティスをいくつか紹介します。A few best practice considerations for working with Elastic Jobs:

  • API の使用を信頼できるユーザーに制限します。Limit usage of the APIs to trusted individuals.
  • 資格情報には、ジョブ ステップの実行に最小限必要な権限だけを設定します。Credentials should have the least privileges necessary to perform the job step. さらに詳しい情報については、SQL Server の承認とアクセス許可に関するページを参照してください。For more information, see Authorization and Permissions SQL Server.
  • ターゲット グループのメンバーとしてサーバーまたはプールを使用する場合には、マスター データベースでデータベースを表示/一覧表示するための権限を設定した資格情報を別個に作成することを強くお勧めします。この資格情報は、ジョブの実行前にサーバーまたはプールのデータベースの一覧を展開する際に使用します。When using a server and/or pool target group member, it is highly suggested to create a separate credential with rights on the master database to view/list databases that is used to expand the database lists of the server(s) and/or pool(s) prior to the job execution.

エージェントのパフォーマンス、容量、および制約Agent performance, capacity, and limitations

エラスティック ジョブでは、実行時間の長いジョブの完了を待っている間に消費する計算リソースを最小限に抑えます。Elastic Jobs use minimal compute resources while waiting for long-running jobs to complete.

データベースから成るターゲット グループの大きさと、ジョブについて希望する実行時間 (同時に実行する worker の数) に応じて、エージェントが "ジョブ データベース" に要求する計算量とパフォーマンスが変わります (ターゲットとジョブの数が増えるほど、要求される計算量が増大します)。Depending on the size of the target group of databases and the desired execution time for a job (number of concurrent workers), the agent requires different amounts of compute and performance of the Job database (the more targets and the higher number of jobs, the higher the amount of compute required).

現時点のプレビュー版では、同時に実行するジョブの上限が 100 件に制限されています。Currently, the preview is limited to 100 concurrent jobs.

ジョブを原因とするターゲット データベースのパフォーマンス低下を防ぐPrevent jobs from reducing target database performance

SQL エラスティック プール内のデータベースにジョブを実行しているときにリソースに対する負荷が大きくなりすぎないようにするために、ジョブを構成して同時にジョブの実行対象とするデータベースの数に制限を設けることができます。To ensure resources aren't overburdened when running jobs against databases in a SQL elastic pool, jobs can be configured to limit the number of databases a job can run against at the same time.

sp_add_jobstepストアド プロシージャの@max_parallelismパラメーターを T-SQL または Add-AzSqlElasticJobStep -MaxParallelismPowerShell で設定することで、ジョブが実行する同時実行データベースの数を設定します。Set the number of concurrent databases a job runs on by setting the sp_add_jobstep stored procedure's @max_parallelism parameter in T-SQL, or Add-AzSqlElasticJobStep -MaxParallelism in PowerShell.

ジョブ作成のベスト プラクティスBest practices for creating jobs

べき等スクリプトIdempotent scripts

ジョブの T-SQL スクリプトは べき等にする必要があります。A job's T-SQL scripts must be idempotent. べき等とは、実行に成功したスクリプトを再度実行した場合に、結果が同じになることを意味します。Idempotent means that if the script succeeds, and it is run again, the same result occurs. 一時的なネットワークの問題により、スクリプトが失敗することがあります。A script may fail due to transient network issues. その場合、ジョブは事前に設定した回数に達するまで自動的にスクリプトを再試行します。In that case, the job will automatically retry running the script a preset number of times before desisting. べき等スクリプトは、2 回 (以上) 実行して成功した場合、結果が同じになります。An idempotent script has the same result even if its been successfully run twice (or more).

単純な方法として、作成前に、オブジェクトの存在をテストします。A simple tactic is to test for the existence of an object before creating it.

IF NOT EXIST (some_object)
    -- Create the object
    -- If it exists, drop the object before recreating it.

同様に、スクリプトは、それが検出する条件を論理的に試験し、対処することで正常に実行できる必要があります。Similarly, a script must be able to execute successfully by logically testing for and countering any conditions it finds.

次の手順Next steps