मैं डीटीयूटीआईएल के माध्यम से एक सी # प्रोग्राम में एसएसआईएस पैकेज को एक एसक्यूएल सर्वर से दूसरे में कॉपी कर रहा हूं। पैकेज MSDB में हैं।

string dtutilCmd = "/c DTUTIL /SOURCESERVER " + sourceServer + " /SQL " + myPackage + " /DestServer " + destServer + " /COPY " + myPackage;

System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = dtutilCmd;
process.StartInfo = startInfo;
process.Start();

dtutilCmd स्ट्रिंग में वेरिएबल सभी स्ट्रिंग हैं। मुद्दा यह है कि जब मेरे उपयोगकर्ता पैकेज का नाम इनपुट करते हैं तो वे मामले को गलत कर सकते हैं। वे MYPACKAGE लिख सकते हैं, इसलिए इसे MYPACKAGE के रूप में तैनात किया जाता है, भले ही यह वास्तव में स्रोत सर्वर पर MyPackage के रूप में मौजूद हो, जिसे मैं संरक्षित करना चाहता हूं।

इसलिए मैं किसी तरह पैकेज का नाम लेना चाहता हूं, और इसे अपनी dtutilCmd स्ट्रिंग के अंतिम भाग में फीड करना चाहता हूं।

1
coinbird 6 सितंबर 2017, 00:09

2 जवाब

सबसे बढ़िया उत्तर

आपको केवल Microsoft.Dts.Runtime नेमस्पेस के 'एप्लिकेशन' वर्ग का उपयोग करना है। फिर आप इसका उपयोग करके एक कनेक्शन स्थापित करते हैं और MSDB से पैकेज की जानकारी प्राप्त करते हैं।

यहां लिंक है जो इसे प्रोग्रामेटिक रूप से करने के बारे में अधिक विवरण देता है - उपलब्ध पैकेजों की प्रोग्रामेटिक रूप से गणना करना

1
VKarthik 6 सितंबर 2017, 02:15

अपने एकीकरण सेवा कैटलॉग को ispac में निकालें। इसे एसएसडीटी के साथ खोलें, और अपने नए सर्वर पर तैनात करें। बहुत आसान।

0
SqlKindaGuy 6 सितंबर 2017, 15:40