Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách thực thi gói SSIS khi tệp đến thư mục

Cách tôi đã làm điều này trong quá khứ là với một gói vòng lặp vô hạn được gọi từ SQL Server Agent, chẳng hạn;

Đây là gói vòng lặp vô hạn của tôi:

Đặt 3 biến:

IsFileExists - Boolean - 0

FolderLocation - String - C:\ Nơi tập tin sẽ được đưa vào \

IsFileExists Boolean - 0

Đối với vùng chứa For Loop:

Đặt IsFileExists các biến như trên.

Thiết lập tác vụ tập lệnh C # với ReadOnlyVariable dưới dạng User::FolderLocation và có những thứ sau:

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

Những gì điều này sẽ làm về cơ bản là theo dõi vị trí thư mục cho tệp .txt, nếu tệp không có ở đó, nó sẽ ngủ trong 10 giây (bạn có thể tăng điều này nếu muốn). Nếu tệp tồn tại, nó sẽ hoàn thành và gói sau đó sẽ thực thi gói tải. Tuy nhiên, nó sẽ tiếp tục chạy, do đó, lần sau khi một tệp được đưa vào, nó sẽ thực thi gói tải một lần nữa.

Đảm bảo chạy gói vòng lặp vĩnh viễn này như một công việc đại lý máy chủ sql để nó sẽ chạy mọi lúc, chúng tôi có một gói tương tự đang chạy và nó chưa bao giờ gây ra bất kỳ sự cố nào.

Ngoài ra, hãy đảm bảo gói đầu vào của bạn di chuyển / lưu trữ tệp khỏi vị trí thư mục thả.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bản xem trước công khai đầu tiên của SQL Server 2019:CTP 2.0

  2. SQL - Truy vấn để lấy địa chỉ IP của máy chủ

  3. Truy vấn SQL liên quan đến nhóm theo và tham gia

  4. Chèn ảnh vào trường ảnh SQL Server 2005 chỉ sử dụng SQL

  5. Tổng quan về Nhiệm vụ Dịch vụ giám sát cơ sở dữ liệu mới nhất - Spotlight Cloud