Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर त्रुटि 111:"... किसी क्वेरी बैच में पहला कथन होना चाहिए"

SQL सर्वर में, एक बैच एक या एक से अधिक T-SQL कथनों का एक समूह होता है जो एक ही समय में एक एप्लिकेशन से SQL सर्वर पर निष्पादन के लिए भेजा जाता है।

अगर आपको इस तरह की कोई त्रुटि मिलती है:

Msg 111, Level 15, State 1, Line 2
'CREATE VIEW' must be the first statement in a query batch.

यह शायद इसलिए है क्योंकि आप उसी बैच में अन्य कथनों के साथ कथन को जोड़ रहे हैं, जिसकी अनुमति बैचों में नहीं है।

त्रुटि संदेश का पहला भाग उस वास्तविक विवरण पर निर्भर करेगा जिसका आप अपने बैच में उपयोग कर रहे हैं। मेरे मामले में यह CREATE VIEW . है , लेकिन यह उतनी ही आसानी से CREATE PROCEDURE . हो सकता है , CREATE FUNCTION , आदि यदि वे कथन हैं जिनका आप उपयोग कर रहे हैं।

उदाहरण

यहां कुछ कोड का उदाहरण दिया गया है जो इस त्रुटि का कारण बनेंगे:

DROP VIEW IF EXISTS vAllCustomers;

CREATE VIEW vAllCustomers AS
SELECT * FROM Customers;

परिणाम:

Msg 111, Level 15, State 1, Line 3
'CREATE VIEW' must be the first statement in a query batch.

मेरे मामले में, मैं दो बयान चलाने की कोशिश कर रहा हूं; एक DROP VIEW कथन और एक CREATE VIEW बयान।

टी-एसक्यूएल बैच के नियम बताते हैं कि CREATE VIEW स्टेटमेंट को उसी बैच में अन्य स्टेटमेंट के साथ नहीं जोड़ा जा सकता है।

दूसरे शब्दों में, CREATE VIEW अपने बैच में एकमात्र कथन हो सकता है।

त्रुटि कैसे ठीक करें

हम पहले स्टेटमेंट के बाद केवल बैच सेपरेटर जोड़कर उपरोक्त त्रुटि को ठीक कर सकते हैं।

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

इसलिए हम पिछले स्टेटमेंट को इसमें बदल सकते हैं:

DROP VIEW IF EXISTS vAllCustomers;
GO
CREATE VIEW vAllCustomers AS
SELECT * FROM Customers;
GO

GOजोड़ना बयानों को दो अलग-अलग बैचों में अलग करके समस्या को हल करता है।

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

आप SQL सर्वर से कनेक्ट करने के लिए उपयोग किए जाने वाले टूल के आधार पर बैच विभाजक को बदलने में सक्षम हो सकते हैं। उदाहरण के लिए, SSMS में, आप इस विकल्प पर जाकर देख सकते हैं:टूल्स> विकल्प> क्वेरी निष्पादन> एसक्यूएल सर्वर और एक विकल्प की तलाश करें जो कुछ ऐसा कहे "एक शब्द या चरित्र निर्दिष्ट करें जिसका उपयोग बैचों को अलग करने के लिए किया जा सकता है"।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर 2016:एक तालिका बनाएँ

  2. SQL सर्वर (T-SQL) में तालिका के लिए विभाजन जानकारी प्राप्त करने के 2 तरीके

  3. पिवट टेबल और समवर्ती कॉलम

  4. Sql सर्वर कॉम्पैक्ट संस्करण में LIKE के साथ पैरामीटर का उपयोग कैसे करें

  5. SQL सर्वर प्रमाणीकरण डेटाबेस के साथ Linux पर SolarWinds Serv-U का उपयोग करना