Solved

Running an SSIS package when a trigger file arrives on Windows Server using Sql*Agent

Posted on 2013-06-21
16
1,624 Views
Last Modified: 2016-02-11
We are trying to run an SSIS package when a trigger file arrives on Windows Server.

So I need a job to run every 5 minutes, and if it finds my_trigger_file.txt, then run an SSIS package.

What kind of job would this be ? Sql Agent would run the job "check for trigger file", and then Step 1 is to see if the file exists. If it's there, then Step 2 run the SSIS package.

I have little experience with Sql Agent, but mostly looking for - what kind of job polls for the file ? And then if "success", Sql Agent has to know that to run the SSIS package.
0
Comment
Question by:Alaska Cowboy
  • 11
  • 4
16 Comments
 
LVL 1

Author Comment

by:Alaska Cowboy
ID: 39266660
or, how about this . . . .

my SSIS package is set to run every 5 minutes.

the first step of the package is to look for the trigger file. If it's there, continue. If not, exit gracefully.

- or -
just run my package which tries to load my_trigger_file.txt. If it's not there, then exit gracefully (as opposed to specifically looking for it . . . )
0
 
LVL 1

Accepted Solution

by:
yechan earned 225 total points
ID: 39266670
Have you considered using a Script Task that looks for the file?  If the script task finds a file, set a local variable to indicate that it found a file.  Afterwards, modify the "Precedent Constraint" to check for that value.  If true, continue, otherwise set it to false so that no other tasks are running.
0
 
LVL 1

Author Comment

by:Alaska Cowboy
ID: 39266793
Script task sounds good, I'll have a look at that . . .

where do I find precedent constraint ?
0
Netscaler Common Configuration How To guides

If you use NetScaler you will want to see these guides. The NetScaler How To Guides show administrators how to get NetScaler up and configured by providing instructions for common scenarios and some not so common ones.

 
LVL 1

Author Comment

by:Alaska Cowboy
ID: 39266807
ok, that scripting . . . I'm going to need a little help with that . . .
0
 
LVL 1

Assisted Solution

by:yechan
yechan earned 225 total points
ID: 39266841
Here is the code that I use in my Script tasks to check for the existence of a file:

string filePath = Dts.Variables["User::cFolderLocation"].Value.ToString();

DirectoryInfo dirInfo = new DirectoryInfo(filePath);

FileInfo[] files = dirInfo.GetFiles("*.zip");

if (files != null && files.Length >= 1)
{
   Dts.Variables["User::vFileExists"].Value = true;
 }
else
{
   Dts.Variables["User::vFileExists"].Value = false;
}

Open in new window


The precedence constraints are the arrows that connect the various tasks.  If you double-click the arrow that connects the Script task with the next task, you'll have to enter the following expression in the expression task:

@[User::vFileExists]==true

So, if the vFileExists variable contains the value "true", it will continue onto the next task, otherwise nothing will happen and the package will go back to sleep.
0
 
LVL 1

Author Comment

by:Alaska Cowboy
ID: 39266862
ok, just what I was looking for, thank you. I'll give it a shot.
0
 
LVL 21

Assisted Solution

by:Alpesh Patel
Alpesh Patel earned 25 total points
ID: 39267553
To do that there is a new task "Filewatcher" (3rd party SSIS task). It works like filesystemwatcher of Windows.

It triggers when file came/update/delete as actions are configured on that folder.

you will get it from here


File watcher task
0
 
LVL 1

Author Comment

by:Alaska Cowboy
ID: 39272967
PatelAlpesh, sorry, I missed your comment. I will have to check with SSIS admin if they are interested in installing this task.
0
 
LVL 1

Author Comment

by:Alaska Cowboy
ID: 39278242
yechan, I need to check for only one file (with a variable name, which I have working).

I think the only thing I need to change is to use "file" instead of "files" for clarity, then say "GetFiles(Dts.Variables("InputFile").Value)

here's your code again:
string filePath = Dts.Variables["User::cFolderLocation"].Value.ToString();

DirectoryInfo dirInfo = new DirectoryInfo(filePath);

FileInfo[] files = dirInfo.GetFiles("*.zip");

if (files != null && files.Length >= 1)
{
   Dts.Variables["User::vFileExists"].Value = true;
 }
else
{
   Dts.Variables["User::vFileExists"].Value = false;
}

Open in new window

0
 
LVL 1

Author Comment

by:Alaska Cowboy
ID: 39278245
also, I am using VB scripting . . .
0
 
LVL 1

Author Comment

by:Alaska Cowboy
ID: 39278297
Ok, I got the precedence constraint working, but it's hard coded

Dts.Variables("FileExists").Value = False

I need to get your code in VB language, will try and poke around on this.
0
 
LVL 1

Assisted Solution

by:yechan
yechan earned 225 total points
ID: 39278355
Hi William,

I don't code in VB.net, however, check this link out.  It will convert C# code to vb.net and vice versa.

http://www.developerfusion.com/tools/convert/csharp-to-vb/
0
 
LVL 1

Author Comment

by:Alaska Cowboy
ID: 39278444
yechan, great ! thank  you.
0
 
LVL 1

Author Comment

by:Alaska Cowboy
ID: 39278662
I got it to work with this simple command:

        If My.Computer.FileSystem.FileExists(Dts.Variables("InputFile").Value) Then

            Dts.Variables("FileExists").Value = True
        Else
            Dts.Variables("FileExists").Value = False
        End If

so, success !
0
 
LVL 1

Expert Comment

by:yechan
ID: 39278672
Awesome!!!!  Glad to read that you got it to work.
0
 
LVL 1

Author Closing Comment

by:Alaska Cowboy
ID: 39278674
very helpful
0

Featured Post

NAS Cloud Backup Strategies

This article explains backup scenarios when using network storage. We review the so-called “3-2-1 strategy” and summarize the methods you can use to send NAS data to the cloud

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In this article we will get to know that how can we recover deleted data if it happens accidently. We really can recover deleted rows if we know the time when data is deleted by using the transaction log.
New Windows 7 Installations take days for Windows-Updates to show up and install. This can easily be fixed. I have finally decided to write an article because this seems to get asked several times a day lately. This Article and the Links apply to…
This tutorial will walk an individual through the steps necessary to enable the VMware\Hyper-V licensed feature of Backup Exec 2012. In addition, how to add a VMware server and configure a backup job. The first step is to acquire the necessary licen…
This tutorial will walk an individual through the steps necessary to install and configure the Windows Server Backup Utility. Directly connect an external storage device such as a USB drive, or CD\DVD burner: If the device is a USB drive, ensure i…

789 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question