मैंने उनकी रचनाओं के लिए अलग संग्रहीत कार्यविधि स्क्रिप्ट को कॉल करने के लिए SQLCMD के साथ निम्नलिखित T-SQL स्क्रिप्ट विकसित की। संग्रहीत कार्यविधियाँ एक बच्चे Store Procedure\ फ़ोल्डर में स्थित हैं (मैं स्थान रखना चाहता हूँ)।

वे शायद इसे करने के बेहतर तरीके हैं, लेकिन मैं एक अनूठी स्क्रिप्ट (लेकिन फाइलों का उपयोग करके) चाहता हूं जो डेटाबेस, टेबल, संग्रहीत प्रक्रियाओं आदि को बनाता है।

मैं न तो डेटाबेस, न ही टेबल स्क्रिप्टिंग का विवरण देता हूं।

/* Create database (I still have some issues with dropping it (existing connections) */

*/ Create tables with constraints... */

-- Is it possible to declare a relative path (here MY_PARENT_PATH is replaced by "c:\...")
:setvar STORE_PROCEUDRE_PATH "[MY_PARENT_PATH]\Stored Procedures"

-- Calls CRUD stored procedures from separate scripts via SQLCMD - is it possible to batch it with all spXXX_XXXX.sql files included in the sub-folder?
:r $(STORE_PROCEUDRE_PATH)\spFields_Create.sql
:r $(STORE_PROCEUDRE_PATH)\spFields_Read.sql
:r $(STORE_PROCEUDRE_PATH)\spFields_Update.sql
:r $(STORE_PROCEUDRE_PATH)\spFields_Delete.sql

-- Idem for other table, such as Features, Values, etc.

क्या Store Procedure\ फ़ोल्डर के भीतर सभी फ़ाइलों spXXX_XXXX.sql फ़ाइलों को लूप करना और :r $(STORE_PROCEUDRE_PATH)\spXXX_XXXX.sql स्क्रिप्ट निष्पादित करना संभव है?

मैं कई लेखों में आया जो FOR निर्माण का उपयोग करके उदाहरण दिखाते हैं, लेकिन मैं भ्रमित हो गया।

किसी भी अंतर्दृष्टि के लिए धन्यवाद :-)

0
Ludovic Wagner 27 सितंबर 2020, 15:54

1 उत्तर

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

हाँ वहाँ एक तरीका है, SQLCMD फाइलों के माध्यम से लूप करने में सक्षम नहीं है, लेकिन आप इसे पूरा करने के लिए विंडोज बैच स्क्रिप्टिंग का उपयोग कर सकते हैं।

इसे कैसे करें इसके बारे में यहां एक अच्छा ब्लॉग है: SQLCMD और बैच फ़ाइल मैजिक

इसलिए मूल रूप से आपको एक .bat फ़ाइल बनाने की आवश्यकता है उदा: CRUDE.bat और उसमें नीचे दिए गए कोड को संपादित और पेस्ट करें और इसे सहेजें,

@@echo off
cd "[MY_PARENT_PATH]\Stored Procedures"

FOR %%A IN (*.SQL) DO ( sqlcmd -S [SERVERNAME] -d [DATABASE] -U [][username -P password] -i "%%A")

आपको इन मानों को अपने मूल्यों से बदलने की आवश्यकता है:

MY_PARENT_PATH : आपका पथ या निर्देशिका जहां आपका उप-आदेश है।

SERVERNAME : आपका डेटाबेस सर्वर नाम।

DATABASE1 : आपका डेटाबेस नाम।

उपयोगकर्ता नाम: आपका SQL उपयोगकर्ता नाम।

पासवर्ड: आपका एसक्यूएल पासवर्ड।

अब आप बैच फ़ाइल चला सकते हैं और यह जादू करता है।

आप यहां भी कर सकते हैं SQLCMD उपयोगिता के बारे में अधिक जानकारी प्राप्त करें

1
eshirvana 28 सितंबर 2020, 06:22