2011-12-28 12 views
8

मैं एक क्लास लाइब्रेरी बना रहा हूं जो .SQL फ़ाइलों को इनपुट (FileInfo) और कनेक्शन स्ट्रिंग के रूप में लेता है। फिर यह कनेक्शन के खिलाफ एसक्यूएल फ़ाइल निष्पादित करने का प्रयास करता है।SQLCMD.exe स्थापित होने पर यह पता लगाने का सही तरीका है?

मुझे लगता है कि SQLCMD डिफ़ॉल्ट रूप से स्थापित आ नहीं करता है माइक्रोसॉफ्ट के एसएमओ का समर्थन करने का फैसला किया और SQLCMD.exe

परीक्षण में, मैं अपने वातावरण में कई मशीनों पर गौर किया,। SQLCMD.exe प्रक्रिया को चलाने का प्रयास करते समय मेरी प्रोग्राम त्रुटियां।

उचित तरीके से पूरे हार्ड ड्राइव खोज के बिना यह देखने के लिए क्या है? क्या कोई सामान्य रजिस्ट्री स्थान है जो निर्दिष्ट करता है कि यह इंस्टॉल है या नहीं? आमतौर पर जब यह स्थापित होता है, मुझे लगता है कि एक पाथ स्थान सेट किया गया है।

बहुत धन्यवाद।

+0

आप अपने सी # ऐप में एक प्रक्रिया में 'sqlcmd.exe -?' निष्पादित करने का प्रयास कर सकते हैं - यदि यह काम करता है, तो SQLCMD मौजूद है - यदि नहीं, तो यह आपको "फ़ाइल नहीं मिली" या "कमांड" जैसी कुछ बताएगा अमान्य "या कुछ .... –

+0

@marc_s हाँ मैं यही सोच रहा था ... बस एक वर्ग पुस्तकालय के लिए सबसे साफ नहीं माना जाता है जो कई अनुप्रयोगों का एक आवश्यक घटक होगा। –

उत्तर

8

मेरे पास 64 बिट एसक्यूएल सर्वर (2 के 8 आर 2) के साथ एक 64 मशीन है और मेरा SQLCMD.EXE c:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE में है।

यह भी पथ में है। एक अलग संस्करण के लिए

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\Tools\ClientSetup\path 

या इस पर एक संस्करण:

तुम बस पथ एसक्यूएल सर्वर रजिस्ट्री स्थान से सीधे देखने के लिए कर सकता है।

यहाँ बड़ा मुद्दा है, नहीं एसक्यूएल सर्वर इसलिए मुझे लगता है कि आप में बताने के लिए एसक्यूएल सर्वर नहीं पूछ सकते हैं कि SQLCMD ग्राहक उपकरण का एक हिस्सा है। बेशक आप सर्वर पर ही चल रहे हैं।

+1

एसक्यूएल सर्वर को एक अलग निर्देशिका में स्थापित किया जा सकता है (जैसे डी: ड्राइव या कुछ पर) - इसलिए निर्देशिका की जांच करना बहुत विश्वसनीय तरीका नहीं है ... आपको निश्चित रूप से पहले रजिस्ट्री से 'टूल्स' निर्देशिका लाने की आवश्यकता है। .. –

+0

ध्यान रखें कि यदि आप इसे सी # में कर रहे हैं और आप Registry.LocalMachine.OpenSubKey() विधि का उपयोग करते हैं, तो x86 स्थान 64 बिट विंडोज़ चलने वाली मशीनों पर वापस लौटाया जाएगा (उदाहरण के लिए सी: \ प्रोग्राम फ़ाइलें (x86) \ ...)। आपको इस मामले में "फ़ाइल नहीं मिली" मिलेगी क्योंकि SQL सर्वर वहां SQLCMD इंस्टॉल नहीं करता है। ध्यान दें यह केवल तभी लागू होता है जब आपका एप्लिकेशन x86 है। –

+4

यह भी ध्यान रखें, sql2012 उपकरण में ..Microsoft एसक्यूएल सर्वर \ स्थापित 110 \ उपकरण .. (यानी नहीं '100') है और यह पथ में डाल नहीं प्राप्त करता है अगर आप SqlCmdLnUtils.msi के माध्यम से एम्बेडेड उपकरण स्थापित करें। यह एक reg कुंजी का उपयोग करने के लिए मूर्खतापूर्ण लगता है जिसमें संस्करण-विशिष्ट संख्या भी शामिल है। HKEY_LOCAL_MACHINE \ सॉफ़्टवेयर \ Microsoft \ Microsoft SQL सर्वर \ SqlCmdLn \ CurrentVersion के बारे में कैसे? – PandaWood

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

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