SQL Agent Job - exceptions handling in ETL package - sql

I have a question on the SSIS below.
I have created an ETL package using SSIS.
I uses SQL Agent Job with the steps below.
i. DB backup - Pre-ETL
ii. Call the ETL package for execution.
iii. DB backup - Post ETL
Due to connectivity issue, I would like to set the retry attempts in the Job step. However, as i know, the retry attempt will restart the step from the beginning instead of continue from the point it failed.
My question: Is it possible to set the SQL Agent job to continue from where the point it failed?
Example:
- ETL is configured to load data into 100 tables.
- When it load until 51th table, connection issue happen caused the ETL process to failed.
- I want to set it to retry and continue to load the data at 51th table.
Any advice are welcome.
Thanks.

Related

How to kill a SQL Server job which keeps on showing an "In Progress" status?

I am using SQL Server 2014 and I have a job (let's call it JN5) scheduled to run at a specific time on a daily basis. The job runs an SSIS package and has 11 steps in it. Looking at the Job History in SSMS, the job seems to be stuck at Step 9. It is not showing as a failure but "In Progress".
I am having a hard time trying to stop it. I have tried the following:
USE msdb ;
GO
EXEC dbo.sp_stop_job N'JN5' ;
GO
I get the following error after execution:
Msg 22022, Level 16, State 1, Line 2
SQLServerAgent Error: Request to stop job JN5 (from User sa) refused because the job is not currently running.
Then, I tried the following: I restarted the SQL Server Agent through SQL Server Configuration Manager. When I viewed the SQL Job Status (after a Refresh) in SSMS, it was still showing "In Progress" !
My next attempt to solve the issue was to restart SQL Server 2014. I then checked the status again in SSMS. It was still showing the "In Progress" status!
I just had a look at the following on StackOverflow: SQL Server job activity (job failed but history records in job activity still showing 'running' status)
However, I am not sure if the above link relates to my problem.
Any ideas on what I can attempt next?
I encountered a similar issue recently. I had a job running, scheduled via SQL Server Agent Jobs, executing from the SSISDB Catalog. (ie a scheduled SSIS job).
During the job, one of the steps processes an SSIS task which used a connection manager to a file (a sql script). While this was running, someone applied some patches to the server and restarted the SQL services stack.
This resulted in the job looking like it was processing (via job history) and appeared to be running (via Integration Services dashboard)... but there was no longer any IO (and none of the SQL in the script had completed execution)...so I knew it was relatively safe to kill the job.
I got the same error:
Msg 22022, Level 16, State 1, Line 9 SQLServerAgent Error: Request to stop job XXXXX (from User YYYYY) refused because the job is not currently running.
So I referenced the ID of the operation from the Integration Services Dashboard, and issues the following commands:
USE SSISDB
GO
EXEC [catalog].[stop_operation] <OperationId>
This removed the running job from the Integration Services dashboard.
When I had this problem I could only solve it by deleting the job.
Before, I created the script to recreate the job. So I only lost the job history.

How to log the SQL Job failure to the Log Table?

SQL Jobs are running from the SQL Agent. At this moment, we don't have the Email Notification configured for failure from the SQL Job.
I am considering to fetch the errors from the log table. Further then to have a stored procedure to generate the error report.
select top 10 * from msdb.dbo.sysjobhistory
How to log the SQL Job failure to the Log Table? What will happen, when a job is scheduled to run for every 5 mins and the error will get updated (or) error will get inserted as new record?
Follow these steps:
Open Properties of job
Go under Steps
Get into the step by pressing Edit button
Navigate under Advanced
Change the on Failure Action to Quit the job reporting failure
Then Check Log To table
I ran into the limitations of the built-in logs, job history, etc., where it doesn't capture when a step fails, but the job itself doesn't.
Based upon this sqlshack article, I built and implemented something very similar which maintains a permanent history of job/step failures, etc., even if you delete a job/step. This solution will even notify when this job fails.
Best of luck!

Is it possible to schedule a Retry for a SQL job instead of its Step components whenever one of the Steps fail?

I am using SQL Server 2014 and I have a SQL job (an SSIS package which contains 11 steps) which has been scheduled to run on a daily basis at a specific time.
I know one can schedule each step to attempt a retry whenever that step fails. However, is there a way to configure a retry for the whole SQL job whenever the job fails at any step during the process? That is, if say, the job fails at Step 8, the whole job is run again from Step 1.
The tidiest solution I can think of would be creating an error handling Step in your Job which will be executed when any other step fails (change the On Failure action of all other steps to jump to this one) and managing the job's schedule to trigger again on the following minute, after the job ends. This way you will see the execution history of the job at the agent.
You will have to keep in mind recurrent failures, I doubt you want the job to be repeating itself indefinitely.
To configure the job to trigger, you can add a Schedule that fires every minute and enable/disable it when necessary. The job won't fire if it's already running.

Reprocess SSAS tabular cube after failure

So we process the SSAS tabular cubes every night and the other night the processing of the cube failed. Now what I want to do is implement a system that would trigger an automatic reprocess after failure.
Is there a way to do that in SSAS Tabular?
Nothing built into SSAS will automatically restart processing on error.
In SQL Agent, the Job Step Properties dialog has an Advanced tab with a Retry Attempts property. If you change that to 1, then it will automatically retry the step (the SSIS package) if it fails.
If you are doing it in ssis then have a failure constraint looping back to the processing task?
The problem would be if you Have a data error that needs to be fixed.

SSIS Agent job keeps running as "inprogress"

I have a SSIS package that monitors a folder. This package will run continuously until it's terminated.
I want to schedule this using a SQL Agent job.This SQL Agent job will utilize two steps. It is kind of heart beat job to to make sure the SSIS package runs.
Step - 1 it checks whether the SSIS package is running. if running quit else step 2.
Step - 2 Execute the SSIS job. if OK then report success and quit else report failure and quit.
uses a daily schedule Mon-Fri every 4 hrs.
When I execute the SQL Job, it starts the SSIS package but the job keeps running and the job monitor and history shows it as "inprogress"
I had to close the job to come out of the dialog but in background the SSIS job is still running as expected.
Is this normal behavior ? Do I need to approach this in a different way ?
Appreciate any pointers or help on this.
Once the job has begun, the Start Jobs dialog box has no impact whatsoever on the running of the job itself - it exists solely to provide a monitoring window for you. Closing it will have no effect on the running job.
From other phrases in your question, I gather that you do not expect the job to ever 'finish' - therefore I would expect it to always show as In Progress unless it errors out or is stopped.
"This package will run continuously until it's terminated."
"The job keeps running and the job monitor and history shows it as in progress"