2014-06-11 7 views
20

में स्विच करता है मैं पावरशेल आईएसई में एक स्क्रिप्ट लिख रहा हूं और मैं Invoke-Sqlcmd का उपयोग कर रहा हूं। कमांड निष्पादित करने के बाद पावरहेल सत्र एसक्यूएलपीएस सत्र (पीएस एसक्यूएल सर्वर:>) में स्विच करता है और मैं दूसरी बार स्क्रिप्ट निष्पादित नहीं कर सकता। मुझे पावरशेल आईएसई छोड़ना है और इसे फिर से शुरू करना है।पावरशेल Invoke-Sqlcmd sqlps सत्र

तो मेरा सवाल यह है कि: एसक्यूएलपीएस से नियमित पीएस पर स्विच कैसे करें या स्विचिंग सत्र से Invoke-Sqlcmd को कैसे रोकें।

Invoke-Sqlcmd -ServerInstance $server -Database master -Username $user -Password $password -InputFile $file ` 
    -ErrorAction Stop -OutputSqlErrors $true -Variable $variable 

यह काम नहीं करता:

Push-Location 
Invoke-Sqlcmd -ServerInstance $server -Database master -Username $user -Password $password -InputFile $file ` 
-ErrorAction Stop -OutputSqlErrors $true -Variable $variable 
Pop-Location 

उत्तर

32

sqlps मॉड्यूल के व्यवहार psdrive कि यह बनाता है आप छोड़ने के लिए है। मैं काफी हद तक निश्चित हूं कि लोगों ने माइक्रोसॉफ्ट से इसे ठीक करने के लिए कहा है, क्योंकि यह बहुत परेशान और विघटनकारी है।

पावरशेल 3.0 द्वारा पेश किए गए मॉड्यूल के स्वचालित आयात से यह और भी परेशान हो जाता है, क्योंकि आप यह भी महसूस नहीं कर सकते कि आप इस तथ्य के बाद मॉड्यूल आयात कर रहे हैं।

जब मैं sqlps उपयोग करते हैं, मैं स्पष्ट रूप से इसे आयात इतना है कि मैं अपने काम करने निर्देशिका के रूप में इस पर नियंत्रण कर सकते हैं:

push-location 
import-module sqlps -disablenamechecking 
pop-location 

यह आपका पिछला निर्देशिका पर वापस ले के बाद मॉड्यूल भरी हुई है।

बहुत देर से संपादित करें: SQL सर्वर प्रबंधन स्टूडियो 2016 के आगमन के साथ हम एक नए PowerShell मॉड्यूल, sqlserver, जो sqlps प्रतिस्थापित करता है और इस समस्या का समाधान करता है।

+0

मैं मॉड्यूल को स्पष्ट रूप से आयात नहीं कर रहा हूं। मैं केवल Invoke-Sqlcmd का उपयोग कर रहा हूँ। मैंने पुश-स्थान के साथ प्रयास किया और यह काम नहीं करता है: – scar80

+0

अब यह काम करता है। समाधान sqlps मॉड्यूल आयात करने के लिए @alroc द्वारा प्रदान किए गए स्निपेट का उपयोग करना है। और उसके बाद किसी भी पुश-स्थान के बिना इनवोले-एसक्लसीएमडी का उपयोग करें। – scar80

+0

चाहे आप इसे पूरी तरह से (ऑटो आयात) करते हैं या स्पष्ट रूप से, आप अभी भी उस मॉड्यूल को आयात कर रहे हैं, जो उस व्यवहार का कारण बनता है। – alroc

1

वहाँ एक समान सवाल पर SuperUser पर आज था: https://superuser.com/questions/767427/stuck-in-powershell-sqlserver

तुम बस सेल्सियस के लिए वापस जाने के लिए सक्षम होना चाहिए:

+0

हां मैं सी टाइप कर सकता हूं: पीएस पर वापस जाने के लिए। लेकिन यदि संभव हो तो मैं स्वचालित रूप से पुश-स्थान का उपयोग करना चाहता हूं। – scar80

2

एक साधारण सीडी 'अपनी पसंद के निर्देशिका' लिए तुम वापस डाल देंगे पिछले निर्देशिका आप में थे

PS SQLSERVER:\> cd D: 

परिणाम:।

PS D:\>