ऐसा लगता है कि आप डॉस एक बैच फ़ाइल है कि या तो (क) अन्य कार्यान्वित बनाने के लिए आदेश का उपयोग करने के प्रयास कर रहे हैं के लिए धन्यवाद:
:On Error exit
:r C:\myPath\MasterUpdateDatabase.bat
GO
SQLCMD -S (Local) -i C:\myPath\InsertUsername.sql
मैं कोई त्रुटि मिलती है बैच फ़ाइलें या (बी) एसक्यूएल या एसक्यूएल स्क्रिप्ट चलाने के लिए SQLCMD निष्पादित करता है।
यहां कुछ उदाहरण दिए गए हैं जो सभी एक में लुढ़क गए हैं। मैं /WAIT
स्विच के साथ डॉस कमांड START
का उपयोग कर रहा हूं, जो आपकी मूल "मास्टर" बैच फ़ाइल को एक विंडो में चल रहा है और बाद की फ़ाइल या कमांड को एक नई विंडो में निष्पादित करेगा। वह नई विंडो तब तक खुलती रहती है जब तक स्क्रिप्ट समाप्त नहीं हो जाती और बाहर निकलती है।
ECHO
एस में से कुछ शायद आवश्यक नहीं हैं, लेकिन स्क्रिप्ट अब आपके लिए वापस बात करेगी।
@echo off
तो, यह इस अर्थ में बहुत आसान है कि आप केवल स्क्रिप्ट चला रहे हैं। यदि आप script1 हैं। बैट ब्रेक पॉइंट हैं, तो आप एक त्रुटि को मुख्य स्क्रिप्ट पर वापस कर सकते हैं और इसे तुरंत समाप्त कर सकते हैं। मैं स्पष्ट नहीं था कि क्या आपको ऐसा करने के लिए मास्टर स्क्रिप्ट की आवश्यकता थी।
echo Starting Database Update.
echo.
echo Excuting Script 1
echo.
start /wait C:\path\to\your\script1.bat
echo If there was a problem, break here.
Pause
echo Excuting Script 2
echo.
start /wait C:\path\to\your\script2.bat
echo If there was a problem, break here.
Pause
यहाँ जहां एक ही स्टार्ट इस्तेमाल किया था/SQLCMD, जो इस मामले में सिर्फ क्वेरी से परिणाम देता है चलाने के लिए प्रतीक्षा है। यहां ध्यान देने योग्य एक बात यह है कि -Q
(अपरकेस) क्वेरी और छोड़ देता है। यदि आप -q
(लोअरकेस) का उपयोग करते हैं तो यह क्वेरी चलाएगा और SQLCMD में एक और क्वेरी के लिए प्रतीक्षा कर देगा।
echo.
echo Running SQLCMD: "select top 100 * from sys.objects"
start /wait sqlcmd -S (local) -Q "select top 100 * from sys.objects"
और यह कैसे आप एक एसक्यूएल स्क्रिप्ट, जो है क्या -i
को दर्शाता चला सकते हैं, लेकिन मैं यह भी स्टार्ट में यह नहीं चला/के रूप में पहले प्रतीक्षा है। ऐसा नहीं है कि आपको करना है, लेकिन मैं दोनों उदाहरण दिखाना चाहता था। यह भी दिखाता है कि -b
बैच प्रक्रिया समाप्त कर देगा यदि आपकी स्क्रिप्ट एक त्रुटि देता है, जो उपयोगी है यदि आप कई स्क्रिप्ट चला रहे हैं जो पूर्व की सफलता पर निर्भर करता है।
echo.
echo Running SQLCMD from an (-i)nput file:
sqlcmd -S (local) -i C:\path\to\your\script.sql -b
echo.
echo Update Complete.
pause
End
तो, मैं तुम्हें एक .bat या .cmd फ़ाइल कि SQLCMD उपयोग किया देख रहे थे ग्रहण किया। मैंने जो उदाहरण दिया है वह बहुत ही बुनियादी है, लेकिन उम्मीद है कि यह आपको सही रास्ते पर सेट करेगी।
ओएच! और याद रखें कि CTRL + C प्रक्रिया में बैच स्क्रिप्ट को तोड़ देता है।
आप हमें बता रहे हैं कि तुम क्या मार डाला , और त्रुटि, लेकिन नहीं ** आपने इसे कैसे निष्पादित किया **। –
ऐसा लगता है कि आप बैच स्क्रिप्ट जैसे SQL क्वेरी का इलाज कर रहे हैं। वाक्यविन्यास काफी अलग है। ": आर" आपका फ़ंक्शन है, जो केवल बैच फ़ाइल को कॉल करता है। "जाओ" अनावश्यक है। आपके लिए कुछ त्रुटि हैंडलिंग और एकाधिक कमांड कहने के लिए एक क्लीनर तरीका संभवतः है। बैच फ़ाइल कॉल से, आप शायद का उपयोग करने के "स्टार्ट/प्रतीक्षा करें" इतना है कि अपने मूल बैच फ़ाइल एक आप इसे भीतर से बुलाया गया है से पहले खत्म नहीं करता है चाहेंगे। क्या आप अतिरिक्त विवरण पोस्ट करने में सक्षम हैं? – Vinnie