適用対象:SQL Server
Azure SQL Managed Instance
Von Bedeutung
Azure SQL Managed Instance では、SQL Server エージェントのほとんどの機能が現在サポートされているわけではありません。 詳細については、Azure SQL Managed Instance T-SQL と SQL Server の違いに関するページ、または「SQL Managed Instance 内での SQL Agent ジョブの制限事項」を参照してください。
この記事では、SQL Server Management Studio、Transact-SQL、または SQL Server 管理オブジェクトを使用して、SQL Server で SQL Server エージェント ジョブの実行を開始する方法について説明します。
ジョブは、SQL Server エージェントが実行する指定された一連のアクションです。 SQL Server エージェント ジョブは、1 つのローカル サーバーで実行することも、複数のリモート サーバーで実行することもできます。
セキュリティ
詳細については、「 SQL Server エージェントのセキュリティを実装する」を参照してください。
SQL Server Management Studio を使用します。
オブジェクト エクスプローラーで、SQL Server データベース エンジンのインスタンスに接続 し、そのインスタンスを展開します。
[SQL Server エージェント] を展開し、 [ジョブ]を展開します。 ジョブを開始したい方法に応じて、次のいずれかの手順を実行します。
単一のサーバーまたはターゲット サーバー上で作業を行っている場合、またはマスター サーバー上でローカル サーバー ジョブを実行している場合、開始するジョブを右クリックして、[ジョブの開始] を選択します。
複数のジョブを開始するには、[ジョブの利用状況モニター] を右クリックし、[ジョブの利用状況の表示] を選択します。 ジョブの利用状況モニターでは、複数のジョブを選択し、選択内容を右クリックして、[ジョブの開始] を選択できます。
マスター サーバー上で作業を行っていて、すべての対象サーバーで同時にジョブを実行する場合、開始するジョブを右クリックし、[ジョブの開始] を選択します。次に、[すべての対象サーバーで開始] を選択します。
マスター サーバー上で作業を行っていて、ジョブのターゲット サーバーを指定する場合、開始するジョブを右クリックし、[ジョブの開始] を選択します。次に、[特定のターゲット サーバーで開始] を選択します。 [ダウンロード命令の通知] ダイアログ ボックスの [特定のターゲット サーバー] チェック ボックスをオンにし、このジョブが実行される各ターゲット サーバーを選択します。
Transact-SQL の使用
オブジェクト エクスプローラーで、 データベース エンジンのインスタンスに接続します。
標準バーで、 [新しいクエリ] を選択します。
次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] を選択します。
-- starts a job named Weekly Sales Data Backup. USE msdb; GO EXECUTE dbo.sp_start_job N'Weekly Sales Data Backup'; GO
詳細については、「 sp_start_job」を参照してください。
SQL Server 管理オブジェクトの使用
選択したプログラミング言語 (Visual Basic、Visual C#、SQL PowerShell など) を使用して、Start クラスのJob メソッドを呼び出します。
SQL PowerShell
パラメーターを使用して SQL Server エージェントで使用できる PowerShell スクリプトを次に示します。 このスクリプトでは、スクリプトに渡されたパラメーターを使用して SQL Server エージェント ジョブを開始する方法を示します。
# Parameters
param(
[string]$ServerInstance,
[string]$JobName
)
# Load the SMO assembly
Add-Type -AssemblyName "Microsoft.SqlServer.SMO"
# Create a server object
$server = New-Object Microsoft.SqlServer.Management.Smo.Server $ServerInstance
# Get the job you want to start
$job = $server.JobServer.Jobs[$JobName]
# Start the job
if ($job) {
$job.Start()
Write-Output "The job '$JobName' on server '$ServerInstance' has been started successfully."
}
else {
Write-Output "The job '$JobName' was not found on server '$ServerInstance'."
}
SQL Server エージェントでスクリプトを使用する方法。
SQL Server Management Studio (SSMS) を開きます。
適切な SQL Server インスタンスに接続します。
SQL Server エージェント ノードを展開します。
[ジョブ] を右クリックし、[新しいジョブ] を選択します。
[ 新しいジョブ ] ダイアログ ボックスで、ジョブ名とその他の必要な詳細を入力します。
[ステップ] ページに移動し、[新規] を選択して新しいジョブ ステップを作成します。
[ 新しいジョブ ステップ ] ダイアログ ボックスで、次の操作を行います。
[種類] を PowerShell に設定します。
[コマンド] フィールドに、パラメーターと共に PowerShell スクリプトを入力します。次に例を示します。
.\YourScript.ps1 -ServerInstance "YourServerInstance" -JobName "YourJobName"
必要に応じて、その他のジョブ プロパティ (スケジュール、アラート、通知など) を設定します。
[OK] を選択してジョブを保存します。
スクリプトの説明
| Step | Description |
|---|---|
| パラメーター | このスクリプトでは、 と の 2 つのパラメーター (それぞれ SQL Server インスタンスとジョブ名) を受け取ります。 |
| SMO の読み込み |
Add-Type コマンドレットを使用して、SQL Server 管理オブジェクト (SMO) アセンブリを読み込みます。 |
| Server オブジェクト |
$ServerInstance パラメーターを使用して、新しいサーバー オブジェクトが作成されます。 |
| Get Job | スクリプトは、 $JobName パラメーターを使用して指定されたジョブを取得します。 |
| ジョブの開始 | ジョブが見つかった場合は、 Start メソッドを使用して開始します。 スクリプトは、成功のメッセージを出力します。 ジョブが見つからない場合は、エラー メッセージが表示されます。 |
詳細については、「SQL Server 管理オブジェクト (SMO)を参照してください。