sql >> データベース >  >> RDS >> Sqlserver

ストアドプロシージャからSQLServerエージェントジョブを実行し、ジョブの結果を返す

    許可されていないすべての皆さんのために OPENROWSETを使用するには コマンド、これは役立つかもしれません。私はここで私の解決策の始まりを見つけました:

    http://social.msdn.microsoft.com/Forums/en-US/89659729-fea8-4df0-8057-79e0a437b658/dynamically-checking-job-status-with-tsql

    これは、 msdb.dbo.sysjobactivityの一部の列が テーブルは、ジョブが何らかの方法で終了した後に最初に入力されます。

    -- Start job
    DECLARE @job_name NVARCHAR(MAX) = 'JobName'
    EXEC msdb.dbo.sp_start_job @job_name = @job_name
    
    
    -- Wait for job to finish
    DECLARE @job_history_id AS INT = NULL
    
    WHILE @time_constraint = @ok
    BEGIN
        SELECT TOP 1 @job_history_id = activity.job_history_id
        FROM msdb.dbo.sysjobs jobs
        INNER JOIN msdb.dbo.sysjobactivity activity ON activity.job_id = jobs.job_id
        WHERE jobs.name = @job_name
        ORDER BY activity.start_execution_date DESC
    
        IF @job_history_id IS NULL
        BEGIN
            WAITFOR DELAY '00:00:10'
            CONTINUE
        END
        ELSE
            BREAK
    END
    
    
    -- Check exit code
    SELECT history.run_status
    FROM msdb.dbo.sysjobhistory history
    WHERE history.instance_id = @job_history_id
    

    WHILEループの実行が許可されている期間をチェックすることをお勧めします。その部分を例から除外することにしました。

    終了コードなどに関するMicrosoftのガイダンス: http://technet.microsoft.com /en-us/library/ms174997.aspx



    1. Brewを介してMySQLをインストールした後、エラーが発生します-サーバーはPIDファイルを更新せずに終了します

    2. 重複した行をすべて表示

    3. dd-mm-yyyy形式のsqlitedbから2つの日付の間のデータを選択するにはどうすればよいですか?

    4. c3p0によると--java.lang.Exception:デバッグのみ:Hibernateトランザクションの開始時にリソースチェックアウトスタックトレースが期限切れになっています