Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да изпълним SSIS пакет, когато файлът пристигне в папката

Начинът, по който съм правил това в миналото, е например с пакет с безкраен цикъл, извикан от SQL Server Agent;

Това е моят пакет за безкраен цикъл:

Задайте 3 променливи:

IsFileExists - Булева стойност - 0

FolderLocation - String - C:\Къде трябва да се постави файлът\

IsFileExists Boolean - 0

За контейнера For Loop:

Задайте IsFileExists променливи както по-горе.

Настройте задача на C# скрипт с ReadOnlyVariable като User::FolderLocation и имат следното:

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

Това, което ще направи, е по същество да следи местоположението на папката за .txt файл, ако файлът не е там, той ще заспи за 10 секунди (можете да увеличите това, ако желаете). Ако файлът съществува, той ще бъде завършен и след това пакетът ще изпълни пакета за зареждане. Той обаче ще продължи да работи, така че следващия път, когато файл бъде пуснат в него, ще изпълни пакета за зареждане отново.

Уверете се, че изпълнявате този пакет за вечни цикли като работа на агент на sql сървър, така че да работи през цялото време, имаме подобен пакет, работещ и той никога не е създавал проблеми.

Също така се уверете, че вашият входен пакет премества/архивира файла далеч от местоположението на папката за изхвърляне.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какво би причинило параметър да надуши един компютър, а не друг?

  2. C# Декриптиране на байтове от SQL Server EncryptByPassPhrase?

  3. Разделете дял на две в SQL Server (T-SQL)

  4. Sql Server 2008 - FullText закръгляващи парични стойности?

  5. Премахнете SCHEMABINDING от дефинирана от потребителя функция в SQL Server