sql >> Databáze >  >> RDS >> Sqlserver

Jak spustit balíček SSIS, když je soubor doručen do složky

Způsob, jakým jsem to dělal v minulosti, je například pomocí balíčku s nekonečnou smyčkou volaného z SQL Server Agent;

Toto je můj balíček nekonečné smyčky:

Nastavit 3 proměnné:

IsFileExists - Boolean - 0

FolderLocation - String - C:\Kam má být soubor umístěn\

IsFileExists Boolean - 0

Pro kontejner For Loop:

Nastavte IsFileExists proměnné jako výše.

Nastavte úlohu skriptu C# s proměnnou ReadOnlyVariable jako User::FolderLocation a mají následující:

 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;
    }
}
}

Co to udělá, je v podstatě sledovat umístění složky pro soubor .txt, pokud tam soubor není, přejde na 10 sekund do režimu spánku (pokud chcete, můžete toto nastavení zvýšit). Pokud soubor existuje, bude dokončen a balíček pak spustí načtení balíčku. Bude však pokračovat v běhu, takže při příštím vhození souboru do něj znovu spustí načítací balíček.

Ujistěte se, že tento balíček s věčnou smyčkou spouštíte jako úlohu agenta serveru SQL, aby se spouštěl neustále, máme podobný balíček spuštěný a nikdy nezpůsobil žádné problémy.

Také se ujistěte, že váš vstupní balíček přesouvá/archivuje soubor mimo umístění složky pro přetažení.



  1. EF6 s MySQL. Daný klíč nebyl ve slovníku přítomen

  2. Provádění uložené procedury Oracle v rámci EntityFramework

  3. Jak vytvořit hlavní knihu/T-účet pomocí PHP Mysql

  4. Vyhledávání pole Php/MySql pomocí ã, š, é, ë, ú, ü, í, ž