2010-09-25 8 views
6

मुझे यकीन है कि इनसे पहले पूछा गया है लेकिन बैच फ़ाइल बनाने के लिए स्पष्ट निर्देश नहीं मिल सकता है, इसे "अपडेट डेटाबेस "इस बैच फ़ाइलएसक्यूएल स्क्रिप्ट्स (एसक्यूएल सर्वर 2008 और अन्य 3 फाइलों में एसक्यूएल स्क्रिप्ट को निष्पादित करने में मदद की ज़रूरत है।

एसक्यूएल अलग फ़ोल्डर में स्थित स्क्रिप्ट निष्पादित चाहिए एक और 3 बल्ला फ़ाइलें निष्पादित।

कोई त्वरित उदाहरण है कि यह कैसे करना है? कभी इसके पहले बहुत बहुत शुक्रिया

संपादित किया

क्या मैं यह कर सकता हूं?

"GO" is not recognized as internal external command

किसी भी इनपुट

+0

आप हमें बता रहे हैं कि तुम क्या मार डाला , और त्रुटि, लेकिन नहीं ** आपने इसे कैसे निष्पादित किया **। –

+0

ऐसा लगता है कि आप बैच स्क्रिप्ट जैसे SQL क्वेरी का इलाज कर रहे हैं। वाक्यविन्यास काफी अलग है। ": आर" आपका फ़ंक्शन है, जो केवल बैच फ़ाइल को कॉल करता है। "जाओ" अनावश्यक है। आपके लिए कुछ त्रुटि हैंडलिंग और एकाधिक कमांड कहने के लिए एक क्लीनर तरीका संभवतः है। बैच फ़ाइल कॉल से, आप शायद का उपयोग करने के "स्टार्ट/प्रतीक्षा करें" इतना है कि अपने मूल बैच फ़ाइल एक आप इसे भीतर से बुलाया गया है से पहले खत्म नहीं करता है चाहेंगे। क्या आप अतिरिक्त विवरण पोस्ट करने में सक्षम हैं? – Vinnie

उत्तर

4

ऐसा लगता है कि आप डॉस एक बैच फ़ाइल है कि या तो (क) अन्य कार्यान्वित बनाने के लिए आदेश का उपयोग करने के प्रयास कर रहे हैं के लिए धन्यवाद:

: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 प्रक्रिया में बैच स्क्रिप्ट को तोड़ देता है।

1

वास्तविक त्रुटि आप देख रहे हैं कि कमांड लाइन दुभाषिया नहीं पहचानता, 'गो' है, तो आप सिर्फ इतना है कि लाइन को दूर कर सकता है।

0

आशा इस में सहायक है:

sqlplus UserName/[email protected] @C:\myPath\InsertUsername.sql 

पी.एस: आदेश जोड़ने के लिए मत भूलना "प्रतिबद्ध," एसक्यूएल फ़ाइल के अंत (InsertUsername.sql) में, इस आदेश के क्रम ओरेकल darabase

-1

में प्रदर्शन परिवर्तन इस उत्तर निश्चित रूप से अपने उद्देश्यों के लिए काम करता है को बचाने के लिए:

sqlcmd -S localhost -U fdmsusr -P fdmsamho -i "E:\brantst\BranchAtt.sql" -o "E:\brantst\branchlog.txt"

+0

अपने जवाब में क्या क्या प्रश्नकर्ता पहले से ही करने की कोशिश की से अलग है? –

+0

आप बल्कि यह समझाएंगे कि आपका उत्तर उसकी समस्या का समाधान क्यों करेगा –

संबंधित मुद्दे