2012-01-13 10 views
14

मेरे पास ऐसा कोई मामला है जहां मुझे 10+ SQL script मिल गया है।बैच फ़ाइल का उपयोग करके एकाधिक SQL स्क्रिप्ट कैसे चलाएं?

मैं जाकर द्वारा 1.

मेरे सभी लिपियों 1 चलाने के लिए नहीं करना चाहते हैं वहाँ एक रास्ता है कि मैं SQL Management studio में उत्तराधिकार में अपने सभी लिपियों चला सकते है।

मुझे this पोस्ट मिला। बैच फ़ाइल बनाना आसान लगता है।

यह सब है कि आप की जरूरत है:

@echo off 
ECHO %USERNAME% started the batch process at %TIME% >output.txt 


for %%f in (*.sql) do (
(
sqlcmd.exe -S servername -E -d databasename -i %%f >>output.txt 
) 


pause 

सर्वर और databasename की जगह है, लेकिन यह काम नहीं कर रहा है।

कोई विचार?

+0

जब आप बैच फ़ाइल चलाते हैं तो output.txt में क्या दिखाई देता है? –

+0

@ मार्कबैनिस्टर विल्म ने 10: 50: 30.46 पर बैच प्रक्रिया शुरू की। तो कुछ और नहीं होता – Willem

+0

यदि आप बैच फ़ाइल से '@echo off' कमांड को हटाते हैं और फिर से प्रयास करते हैं तो आपको क्या आउटपुट मिलता है? साथ ही, बैच फ़ाइल की शुरुआत में 'ECHO% PATH% 'जोड़ने का प्रयास करें और जांचें कि SQLCMD.EXE के लिए पथ शामिल है। –

उत्तर

3

साथ करते हैं। आप स्क्रिप्ट स्वचालित रूप से चलाने के लिए एक शेड्यूल योजना भी बना सकते हैं।

http://msdn.microsoft.com/en-us/library/aa174792(v=sql.80).aspx

+0

कृपया मेरे अपडेट किए गए प्रश्न को देखें। – Willem

+0

क्या आपको स्क्रिप्ट से त्रुटि संदेश मिला है? क्या आपने '* .sql' के लिए पथ की जांच की है, जो एसक्यूएल स्क्रिप्ट का प्रतिनिधित्व करता है जिसे आप चलाना चाहते हैं। –

+0

कोई त्रुटि संदेश नहीं। पथ सभी ठीक हैं – Willem

5

हां, यह संभव है। आप इसे SQLCMD के आर कमांड के साथ कर सकते हैं।

मैं दृढ़ता से इस लेख को पढ़ने के लिए सलाह देते हैं और आप अपने सभी स्क्रिप्ट कॉल करने के लिए एक Strored प्रक्रिया बना सकते हैं SQLCMD

http://www.mssqltips.com/sqlservertip/1543/using-sqlcmd-to-execute-multiple-sql-server-scripts/

+0

कृपया मेरे अपडेट किए गए प्रश्न को देखें। – Willem

+1

क्या लेनदेन में सभी स्क्रिप्ट चलाने के लिए यह संभव है? और यदि किसी भी स्क्रिप्ट में कोई त्रुटि है तो रोलबैक और निष्पादन रोकें। –

9

आप एक बेजोड़ कोष्ठक मिल गया है, वहाँ।

प्रयास करें में (* .sql) %% च के लिए क्या sqlcmd.exe एस servername -E -d databasename मैं %% च >>

output.txt

मैं सिर्फ एक .cmd में यह बचाया फ़ाइल और ऐसा लगता है कि यह काम कर रहा है।

2

यहाँ स्रोत कोड http://scriptzrunner.codeplex.com/

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

1

आप शायद पहले से ही यह जानते हैं, यदि आप नहीं करते हैं, तो आपके द्वारा पोस्ट की गई स्क्रिप्ट केवल उन मशीनों पर चलती है जिनके पास SQL ​​सर्वर स्थापित है।

0

कुछ बैच चाल

cd %~dp0 //use this if you use 'for xxx in', it solved most of my problems 

ECHO %USERNAME% started the batch process at %TIME% >output.txt 


for %%f in (*.sql) do (
(
sqlcmd.exe -S servername -E -d databasename -i %%f >>output.txt 
) 
echo %errorlevel% 
pause 
0

आप उपयोग कर सकते हैं Batch Compiler ऐड-इन SMSS के लिए, यह जाने आप एक साथ कई लिपियों चलाने के लिए, SQLCMD स्क्रिप्ट बना सकते हैं या उन्हें एक * .sql फ़ाइल में मजबूत।

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