SQL Server Management Studio & Transact SQL में GO का उपयोग क्या है?


363

SQL सर्वर प्रबंधन स्टूडियो हमेशा एक GO कमांड सम्मिलित करता है जब मैं राइट क्लिक "स्क्रिप्ट एज़" मेनू का उपयोग करके एक क्वेरी बनाता हूं। क्यों? जीओ वास्तव में क्या करता है?


2
डुप्लिकेट - stackoverflow.com/questions/971177/...
ChrisF

29
@ क्रिस - यह एक डुप्लिकेट नहीं है, हालांकि स्वीकृत उत्तर भी इस प्रश्न का उत्तर देता है। यह प्रश्न लेनदेन में "जीओ" का उपयोग करने के बारे में है - यह सिर्फ पता चला है कि यह वास्तव में एक एसक्यूएल कमांड बिल्कुल नहीं है। यह प्रश्न बहुत अधिक सामान्य है और SSMS में GO कमांड के बारे में प्रश्नों के लिए एक निश्चित उत्तर प्रदान करने का प्रयास करता है।
tvanfosson


Microsoft दस्तावेज़ीकरण: SQL सर्वर उपयोगिता विवरण - GO : बैच पूर्ववर्ती GO कई बार निर्दिष्ट संख्या निष्पादित करेगा।
मिनट्स

जवाबों:


304

यह एक बैच टर्मिनेटर है, लेकिन आप जो चाहें उसे बदल सकते हैं वैकल्पिक शब्द


80
gbn इसे
सेलेक्ट

14
धन्यवाद! हालाँकि तब GO स्टेटमेंट का क्या मतलब है? यह बेवकूफी भरा लग सकता है लेकिन 'बैच ऑफ कोड' का क्या मतलब है? एमएसडीएन कहता है कि गो के बाद वैरिएबल की उम्र समाप्त हो जाएगी। लेन-देन की प्रतिबद्धता से कोई लेना देना नहीं है? क्या ऐसी कोई परिस्थिति है जहां मुझे अपनी स्क्रिप्ट में GO स्टेटमेंट रखना चाहिए?
kate1138

4
इसका मतलब है कि इससे पहले सभी टी-एसक्यूएल "एक बार में" निष्पादित करेंगे। जो मैं समझता हूं, वह एक अर्धविराम (OLEDB / Oracle) के साथ विनिमेय है। उदाहरण के लिए यदि आपके पास एक बड़ी पोस्ट परिनियोजन स्क्रिप्ट है, तो लाइनों के बीच एक GO स्टेटमेंट स्क्रिप्ट में उपयोग की जाने वाली मेमोरी की मदद कर सकता है।
एंथनी मेसन

4
यह उत्तर वास्तव में "क्या यह वास्तव में करता है" या क्यों नहीं समझाता है
एंड्रयू

@Tvanfosson का उत्तर पढ़ने के बाद: क्या यह वास्तव में अर्धविराम के साथ विनिमेय है?
WoIIe

298

प्रबंधन स्टूडियो 2005 के बाद से ऐसा लगता है कि आप GOएक intपैरामीटर के साथ उपयोग कर सकते हैं , जैसे:

INSERT INTO mytable DEFAULT VALUES
GO 10

ऊपर 10 पंक्तियों को सम्मिलित करेगा mytable। सामान्यतया, GOसंबंधित sql कमांड nबार निष्पादित करेगा


199

GO कमांड एक Transact-SQL स्टेटमेंट नहीं है, लेकिन SQL सर्वर प्रबंधन स्टूडियो कोड संपादक सहित कई एमएस उपयोगिताओं द्वारा मान्यता प्राप्त एक विशेष कमांड है।

GO कमांड का उपयोग SQL कमांड को बैचों में समूहित करने के लिए किया जाता है जो सर्वर पर एक साथ भेजे जाते हैं। बैच में शामिल कमांड, अर्थात, अंतिम GO कमांड या सत्र की शुरुआत के बाद से कमांड का सेट, तार्किक रूप से सुसंगत होना चाहिए। उदाहरण के लिए, आप एक बैच में एक चर को परिभाषित नहीं कर सकते हैं और फिर इसका उपयोग दूसरे में कर सकते हैं क्योंकि चर का दायरा उस बैच तक सीमित है जिसमें यह परिभाषित है।

अधिक जानकारी के लिए, http://msdn.microsoft.com/en-us/library/ms188037.aspx देखें ।


37
किन परिस्थितियों में चीजें GOवास्तव में उपयोगी हैं?
निकोडेमस

3
@ nicodemus13 देखें stackoverflow.com/questions/20711326/…
Zain Rizvi

4
इसलिए यदि बैच में 1 कथन विफल हो जाता है, तो क्या सभी विफल हो जाते हैं?
मॉन्स्टरमोरपीजी

36

GO एक SQL कीवर्ड नहीं है।

यह एक बैच विभाजक है जिसका उपयोग क्लाइंट टूल्स (जैसे SSMS) द्वारा पूरी स्क्रिप्ट को बैचों में तोड़ने के लिए किया जाता है

पहले कई बार उत्तर दिया गया ... उदाहरण 1


4
अपने बचाव में मैंने प्रश्न प्रस्तुत करने से पहले सुझाए गए डुप्लिकेट के माध्यम से देखा - और आपका उदाहरण नहीं दिखा, और न ही यह वास्तव में एक डुप्लिकेट है, हालांकि उत्तर लागू है।
tvanfosson

26
यहां "गो" की खोज करना कठिन है :-)
gbn

20

बस मौजूदा उत्तरों को जोड़ने के लिए, जब आप विचार बना रहे हों, तो आपको इन कमांडों को उपयोग करने वाले बैचों में अलग करना होगा go, अन्यथा आपको त्रुटि मिलेगी 'CREATE VIEW' must be the only statement in the batch। इसलिए, उदाहरण के लिए, आप निम्न sql स्क्रिप्ट को निष्पादित नहीं कर पाएंगेgo

create view MyView1 as
select Id,Name from table1
go
create view MyView2 as
select Id,Name from table1
go

select * from MyView1
select * from MyView2

प्रक्रियाएं भी बनाएं
लुसियानो सैंटोस

2
यह एकमात्र उत्तर है जो वास्तव में ओपी के प्रश्न के पहले भाग को संबोधित करता है "... हमेशा एक GO कमांड सम्मिलित करता है .... क्यों?"। ऐसा लगता है, ज्यादातर समय, डर से बाहर। केवल उसी समय की आवश्यकता होती है जब कोई कमांड अपने स्वयं के बैच में होनी चाहिए।
18

7

गो का मतलब है, जो भी SQL स्टेटमेंट्स उसके पहले और किसी भी GO से पहले लिखे गए हैं, प्रोसेसिंग के लिए SQL सर्वर पर जाएंगे।

Select * from employees;
GO    -- GO 1

update employees set empID=21 where empCode=123;
GO    -- GO 2

उपर्युक्त उदाहरण में, GO 1 से पहले के स्टेटमेंट एक बैच में sql से पहले जाएंगे और फिर GO 2 से पहले के किसी भी अन्य स्टेटमेंट से दूसरे बैच में sql सर्वर पर जाएंगे। इसलिए जैसा कि हम देखते हैं कि यह अलग हो गया है।


5
Use herDatabase
GO ; 

कोड GOमार्कर के ऊपर दिए गए निर्देशों को निष्पादित करने के लिए कहता है । मेरा डिफ़ॉल्ट डेटाबेस myDatabase है, इसलिए उपयोग करने के बजाय myDatabase GOऔर herDatabase का उपयोग करने के लिए वर्तमान क्वेरी बनाता है


-8

यहाँ जीओ का जादू है।

SELECT 'Go'
Go 10

SYNTAX: INT पर जाएं(BatchNumber)

बैचनंबर: कई बार नहीं हुआ

सरल लगता है, यदि आप गहरा कोड करते हैं , तो यह आपको स्पेगेटी तक ले जा सकता है ।


यह GOTO कथन को प्रोग्रामिंग में उपयोग के रूप में समझाने की कोशिश कर रहा है (मुझे लगता है), बैच स्क्रिप्ट की तरह .. SQL सर्वर में GO कथन से कोई लेना-देना नहीं है। जीओ का उपयोग आमतौर पर एक INT के साथ नहीं किया जाता है, हालांकि आप चाहें तो एक बैच N को कई बार संसाधित कर सकते हैं .. इसलिए नहीं, यह GO का "जादू" नहीं है। इसका उपयोग स्क्रिप्ट को समूहीकृत निष्पादन की एक श्रृंखला में अलग करने के लिए किया जाता है, जैसा कि अन्य उत्तरों में बताया गया है।
हरबेरिटो लुगो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.