SQL सर्वर में "फ़ाइल शामिल करें" की कोई अवधारणा है?


19

मेरे पास स्क्रिप्ट का एक सेट है जिसे एक निश्चित क्रम में चलाने की आवश्यकता है। मैं एक "मास्टर फ़ाइल" बनाना चाहूंगा जो अन्य सभी फाइलों और उनके सही क्रम को सूचीबद्ध करती है। मूल रूप से C ++ या ASP / VBScript की फ़ाइल शामिल करें।

जवाबों:


19

यदि आप SQLCMD का उपयोग कर रहे हैं , तो आप :r FileNameएक अलग .sql फ़ाइल शामिल करने के लिए उपयोग कर सकते हैं ।

: आर फाइलनाम

अतिरिक्त T-SQL स्टेटमेंट और SQLCMD कमांड को फ़ाइलनाम से निर्दिष्ट फ़ाइल से स्टेटमेंट कैश में दर्ज करता है। FileName विज़ुअल स्टूडियो के लिए स्टार्टअप निर्देशिका के सापेक्ष पढ़ा जाता है। बैच टर्मिनेटर के सामने आने के बाद फ़ाइल को पढ़ा और निष्पादित किया जाता है। आप एकाधिक: r कमांड जारी कर सकते हैं। फ़ाइल में किसी भी SQLCMD कमांड को शामिल किया जा सकता है, जिसमें उपकरण, विकल्प में परिभाषित बैच टर्मिनेटर भी शामिल है। आप उपयोग कर सकते हैं: अन्य लिपियों को शामिल करने के लिए पूर्व-परिनियोजन या परिनियोजन स्क्रिप्ट में r।


क्या आप स्वयं इस सुविधा का उपयोग कर रहे हैं?
bernd_k

मैं SQL सर्वर डेटा उपकरण परियोजनाओं में इसका भारी उपयोग कर रहा हूं। यह वास्तव में मदद करता है जब मैं नमूना डेटा को व्यवस्थित करने की कोशिश कर रहा हूं जो पोस्ट स्क्रिप्ट के रूप में चलता है।
जोनाथन एलन

4

प्राचीन सी के संदर्भ में निश्चित रूप से पूर्वप्रकारों को नहीं

  • T-SQL अपने आप में ऐसी कोई अवधारणा नहीं है
  • SSMS के sqlcmd और sqlcmdmode सापेक्ष फ़ाइल पथ नहीं संभालते हैं
  • SSMS के sqlcmd और sqlcmdmode सहित सशर्त का समर्थन नहीं करते हैं

यदि आपके पास दिए गए पूर्ण पथों के साथ फ़ाइलों का एक सेट है, जिसे आप बिना शर्त क्रम में शामिल करना चाहते हैं, तो आप कमांड लाइन टूल sqlcmd का उपयोग कर सकते हैं या @ mfredrickson और @Marian द्वारा उल्लिखित sqlcmdmode में SSMS का उपयोग कर सकते हैं।


लेकिन यदि आप रिश्तेदार पथ या सशर्त चाहते हैं, तो आपको कुछ रैपर कॉलिंग का उपयोग करने की आवश्यकता है जिसमें sqlcmd (या इसके अपग्रेड किए गए पूर्ववर्तियों में से एक isql या osql) है।

वर्तमान में इस स्थिति में मेरी नौकरी पर, मैं पुराने vbs और hta कोड की समीक्षा कर रहा हूं। मैं पूरी तरह से खुश नहीं हूं, लेकिन यह एक व्यावहारिक निर्णय है। यह काम कर रहा है और अंतिम उपयोगकर्ता hta GUI के साथ घर पर है और कोई अतिरिक्त सॉफ़्टवेयर इंस्टॉलेशन की आवश्यकता नहीं है।

एक नए डिज़ाइन के लिए, मैं sqlcmd की कॉल को रैप करने के लिए WPF और PowerShell का उपयोग करने के बारे में सोचना शुरू करूँगा, लेकिन हमारे मौजूदा ग्राहकों के साथ मैं PowerShell V2 की उपस्थिति का अनुमान नहीं लगा सकता।

पूर्व के समय में भी हमने इस उद्देश्य के लिए सरल सीएमडी बैच लिखे, उनमें से कुछ अभी भी उपयोग में हैं।

मुझे लगता है कि वर्तमान उपकरण हैं, विशेष रूप से वर्कफ़्लो को लक्षित करने वाले, जो यहां उपयुक्त हो सकते हैं। मैं उन लोगों से परिचित नहीं हूँ।


3

प्रबंधन स्टूडियो में SQLCMD मोड के साथ , आप SQLCMD उपयोगिता का उपयोग करके अपनी सभी sql फ़ाइलों को व्यवस्थित करने और कॉल करने के लिए एक मास्टर फ़ाइल के रूप में उपयोग करने के लिए एक बैच फ़ाइल का भी उपयोग कर सकते हैं ।

SQLCMD मोड प्रबंधन स्टूडियो के अंदर उपयोगिता उपयोग का एक सिमुलेशन है, इसलिए मोड के बीच बड़ा अंतर नहीं है। सिवाय इसके कि कुछ समय के लिए मैं बैच चलाना पसंद करता हूं (एम स्टूडियो का अधिक उद्घाटन नहीं ... लोडिंग सही डीबी ... आदि)। मैं बैच में सब कुछ कॉन्फ़िगर करना पसंद करता हूं, जिसमें आउटपुट फाइलें भी शामिल हैं।


2

मैं मानता हूं, टी-एसक्यूएल प्रीप्रोसेसर की बुरी तरह से जरूरत है। मैंने C # में अपना एक विकसित किया, जिसने मुझे एक घंटे की तरह लिया। एसक्यूएल लिपियों के निष्पादन के आदेश पर नियंत्रण के अलावा, यह मुझे मैक्रोज़ की अनुमति देता है जो स्केलर यूडीएफ की तरह दिखते हैं और उपयोग करने के लिए सुविधाजनक हैं, लेकिन इनलाइन यूडीएफ के रूप में तेज़ प्रदर्शन करते हैं।


+1 - मैंने कई मौकों पर टेम्प्लेटिंग टूल के साथ उस तरह का काम किया है। मैं कोई है जो तल पर एक बड़ा चुंबन SSMS के लिए एक सभ्य मैक्रो पूर्व प्रोसेसर प्लगइन कार्यान्वित देना होगा हालांकि sqlcmd चर प्रतिस्थापन के लिए कुछ सुविधाएं उपलब्ध हैं।
कंसर्नडऑफटुनब्रिजवेल्स

1
@AK, क्या आप इस पर थोड़ा और विस्तार से विचार करेंगे? शायद गिथब पर कुछ कोड पोस्ट करें?
क्रेग

2

मुझे bernd_k का उत्तर पसंद है । यदि आपने अपनी स्क्रिप्ट का नाम कैसे दिया है, इस पर निर्भर करते हुए, यदि आप SQL Server 2008 या उच्चतर चला रहे थे, तो एक नंबर सहित SQL सर्वर पॉवरशेल (SQLPS) का उपयोग किया जा सकता है। तब भी यदि आप SQL 2005 का उपयोग कर रहे थे, तो आप 2005 के लिए PowerShell और SMO का उपयोग कर सकते थे।

साइड नोट: मेरा मानना ​​है कि SQLCMD अंततः मूल्यह्रास सूची में डाल दिया जाएगा और इसे SQLPS, PowerShell के साथ बदल दिया जा रहा है।

कुछ अन्य विकल्प भी हैं।

  1. SQL एजेंट कार्य में प्रत्येक स्क्रिप्ट को एक चरण के रूप में सेट करें। आप उनके द्वारा निष्पादित आदेश को सेट कर सकते हैं।
  2. प्रत्येक फ़ाइल को कॉल करने के लिए एक SSIS पैकेज बनाएँ। यह थोड़ा और अधिक नियंत्रण प्रदान कर सकता है और थोड़ा अधिक प्रवेश विकल्प प्रदान कर सकता है। मुझे यह तरीका पसंद है अगर एक स्क्रिप्ट के परिणाम को अगले एक निष्पादन से पहले सत्यापित करने की आवश्यकता है।

मुझे नहीं लगता कि एसक्यूसीएमडी को मूल्यह्रास किया जाएगा क्योंकि यह एसक्यूएल सर्वर डेटा टूल्स और डीएसीपीएसी के लिए बहुत महत्वपूर्ण है।
जोनाथन एलन

@JonathanAllen यदि आप किसी भी मौजूदा दस्तावेज़ को खोजने के लिए होते हैं जो DACPACs के प्रबंधन से पता चलता है कि SQLCMDमुझे बताएं, क्योंकि अधिकांश l जो पॉवरशेल को संदर्भित करता है । मैं यह भी नहीं देख sqlcmdसकता कि स्कीमा तुलना के लिए शायद सिवाय एसएसडीटी के साथ प्रयोग किया जाता है, लेकिन मैं उत्पन्न स्क्रिप्ट का उपयोग नहीं करता।
शॉन मेल्टन

SSDT लिपियाँ sqlcmd स्क्रिप्ट हैं। यह कैसे पैरामीटर, उपयोगकर्ता-परिभाषित और डेटाबेस नाम जैसी चीजों को संभालता है। यदि आप SqlPackage.exe का उपयोग करके DACPAC को तैनात करना चाहते हैं, तो यह लिंक दिखाता है कि sqlcmd मापदंडों को कैसे पास किया जाए। msdn.microsoft.com/en-us/…
जोनाथन एलन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.