sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan udføres SSIS-pakken, når en fil er ankommet til mappen

Den måde, jeg tidligere har gjort det på, er med en infinite loop-pakke kaldet fra SQL Server Agent, for eksempel;

Dette er min infinite loop-pakke:

Indstil 3 variabler:

IsFileExists - Boolean - 0

FolderLocation - String - C:\Hvor filen skal lægges ind\

IsFileExists Boolean - 0

For For Loop-beholderen:

Indstil IsFileExists variabler som ovenfor.

Konfigurer en C#-scriptopgave med ReadOnlyVariable som User::FolderLocation og har følgende:

 public void Main()
    {
        int fileCount = 0;
        string[] FilesToProcess;
        while (fileCount == 0)
        {
            try
            {

                System.Threading.Thread.Sleep(10000);
                FilesToProcess = System.IO.Directory.GetFiles(Dts.Variables["FolderLocation"].Value.ToString(), "*.txt");
                fileCount = FilesToProcess.Length;

                if (fileCount != 0)
                {
                    for (int i = 0; i < fileCount; i++)
                    {
                        try
                        {

                            System.IO.FileStream fs = new System.IO.FileStream(FilesToProcess[i], System.IO.FileMode.Open);
                            fs.Close();

                        }
                        catch (System.IO.IOException ex)
                        {
                            fileCount = 0;
                            continue;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        // TODO: Add your code here
        Dts.TaskResult = (int)ScriptResults.Success;
    }
}
}

Hvad dette vil gøre, er i det væsentlige at holde øje med mappens placering for en .txt-fil, hvis filen ikke er der vil den sove i 10 sekunder (du kan øge dette, hvis du vil). Hvis filen eksisterer, fuldføres den, og pakken vil derefter udføre indlæsningspakken. Den vil dog fortsætte med at køre, så næste gang en fil slippes i, vil den udføre indlæsningspakken igen.

Sørg for at køre denne forever loop-pakke som et sql-serveragentjob, så den kører hele tiden, vi har en lignende pakke kørende, og den har aldrig forårsaget nogen problemer.

Sørg også for, at din inputpakke flytter/arkiverer filen væk fra drop-mappens placering.



  1. Brug af Spotlight Cloud til at løse SQL Server-blokering

  2. MySQL SUM HVIS felt b =felt a

  3. Kan ikke oprette tabel med forberedt erklæring

  4. Fatal fejl:Kald til et medlem funktion query() PHP CLASS