Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

फ़ोल्डर में फ़ाइल आने पर एसएसआईएस पैकेज कैसे निष्पादित करें

जिस तरह से मैंने इसे अतीत में किया है वह SQL सर्वर एजेंट से बुलाए गए अनंत लूप पैकेज के साथ है, उदाहरण के लिए;

यह मेरा अनंत लूप पैकेज है:

3 चर सेट करें:

IsFileExists - बूलियन - 0

FolderLocation - String - C:\जहां फाइल डालनी है\

IsFileExists बूलियन - 0

लूप कंटेनर के लिए:

IsFileExists सेट करें ऊपर के रूप में चर।

ReadOnlyVariable के साथ User::FolderLocation के रूप में 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;
    }
}
}

यह क्या करेगा अनिवार्य रूप से एक .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. घातक त्रुटि:अपरिभाषित फ़ंक्शन पर कॉल करें sqlsrv_connect ()

  2. SQL सर्वर (T-SQL) में एक विभाजित तालिका बनाएँ

  3. टी-एसक्यूएल का उपयोग कर एक्सएमएल वैरिएबल में एक्सएमएल एट्रिब्यूट वैल्यू को कैसे अपडेट करें?

  4. डेटाबेस के लिए लेनदेन लॉग भरा हुआ है

  5. एक संग्रहीत प्रक्रिया के भीतर नियमित अभिव्यक्ति का उपयोग करना