Scenario:
We are in process of creating our SSIS Package, one of the requirement is to Audit the information about package execution to below table
CREATE TABLE dbo.PackageExecutionLog
(
PkgID INT IDENTITY(1, 1),
PackageName VARCHAR(100),
ExecutionDateTime DATETIME,
TimeTakeninMinutes INT
)
Solution :
As we can see that the important information that we need to log for each execution is Package Name,Execution Date Time and Total time taken in minutes by Package for execution.
Lets created our SSIS Package
Step 1:
Create a variable that can hold the start date time for us that we can use at the end for Audit purpose.
Step 2:
Set the value of variable by using Execute SQL task as shown below
Step 3:
Place all the other Tasks such as data flow task, execute sql task or any other those are required by your package.
I have put one data flow task and one execute sql task with statement WAITFOR DELAY '00:2:05' to make it wait for couple of minutes before moving to next task.
Step 4:
Bring Execute SQL Task that we will use to insert information into out log table. Configure as shown below
Expressions:
"insert into dbo.PackageExecutionLog(PackageName,TimeTakeninMinutes,ExecutionDateTime)
Select '"+ @[System::PackageName]+"',datediff(minute,'"+(DT_STR,50,1252) @[User::VarStatTime]+"',getdate()),getdate()"
Final Output:
This is how our final package should look like
Lets Select some records from our dbo.PackageExeuctionLog table and see what information it inserted
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.