Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana menjalankan paket SSIS ketika file tiba di folder

Cara saya melakukan ini di masa lalu adalah dengan paket infinite loop yang dipanggil dari SQL Server Agent, misalnya;

Ini adalah paket infinite loop saya:

Tetapkan 3 Variabel:

IsFileExists - Boolean - 0

FolderLocation - String - C:\Di mana file akan diletakkan\

IsFileExists Boolean - 0

Untuk wadah For Loop:

Setel IsFileExists variabel seperti di atas.

Siapkan tugas skrip C# dengan ReadOnlyVariable sebagai User::FolderLocation dan memiliki yang berikut:

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

Apa yang akan dilakukan pada dasarnya adalah mengawasi lokasi folder untuk file .txt, jika file tersebut tidak ada maka akan tidur selama 10 detik (Anda dapat meningkatkan ini jika Anda mau). Jika file memang ada, itu akan selesai dan paket kemudian akan mengeksekusi paket beban. Namun itu akan terus berjalan, sehingga pada saat file dijatuhkan di dalamnya akan mengeksekusi paket pemuatan lagi.

Pastikan untuk menjalankan paket selamanya loop ini sebagai tugas agen server sql sehingga akan berjalan sepanjang waktu, kami memiliki paket serupa yang berjalan dan tidak pernah menyebabkan masalah.

Juga, pastikan paket input Anda memindahkan/mengarsipkan file dari lokasi folder drop.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara melakukan inner join pada nomor baris di sql server

  2. Kunci baris - menggunakannya secara manual

  3. Cara Menginstal SQLOPS di Mac

  4. Bagaimana cara menghindari tanda persentase di T-SQL?

  5. Masukkan Massal File Data Ke SQL Server