जिस तरह से मैंने इसे अतीत में किया है वह 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 सर्वर एजेंट जॉब के रूप में चलाना सुनिश्चित करें ताकि यह हर समय चले, हमारे पास एक समान पैकेज चल रहा है और इससे कभी कोई समस्या नहीं हुई है।
साथ ही, सुनिश्चित करें कि आपका इनपुट पैकेज फ़ाइल को ड्रॉप फ़ोल्डर स्थान से दूर ले जाता/संग्रहित करता है।