तालिका निर्माण पर क्लस्टर इंडेक्स निर्माण विफल


10

हमें निम्न स्क्रिप्ट चलाते समय एक त्रुटि मिली है;

IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES 
  WHERE TABLE_TYPE='BASE TABLE' AND TABLE_NAME='Table_Name')
BEGIN
CREATE TABLE Table_Name
(
    Field_Name_1 binary(32) NOT NULL CONSTRAINT PK_Name_Goes_Here PRIMARY KEY NONCLUSTERED
    , Field_Name_2 int NOT NULL 
    , Field_Name_3 datetime NOT NULL INDEX IX_Name_Goes_Here CLUSTERED
)
END 

विशेष रूप से यह निम्न त्रुटि फेंक क्लस्टर सूची निर्माण है:

Msg 1018, Level 15, State 1, Line 15
'INDEX' के पास गलत सिंटैक्स। यदि यह तालिका संकेत के भाग के रूप में अभिप्रेत है, तो A कीवर्ड और कोष्ठक के साथ आवश्यक है। उचित सिंटैक्स के लिए SQL सर्वर पुस्तकें ऑनलाइन देखें।

यह अजीब है क्योंकि यह एक विशेष QA सर्वर को छोड़कर हमारे सभी सर्वरों पर काम करता है। हमने जो फिक्स प्लेस किया है, वह टेबल क्रिएशन स्टेटमेंट के बाहर क्लस्टर किए गए इंडेक्स को बनाना है, लेकिन अगर किसी को इस समस्या का सामना करना पड़ा है, तो मुझे इसमें दिलचस्पी होगी?

जवाबों:


11

इनलाइन सूचकांक घोषणा के लिए वाक्य रचना एसक्यूएल सर्वर 2014 में जोड़ा गया है, हालांकि यह है कि है था में पूरी तरह से स्पष्ट नहीं आधिकारिक CREATE TABLEप्रलेखन । प्रलेखन स्वामियों से बात करने के बाद, यह विषय अब सटीक रूप से दर्शाता है कि इनलाइन इंडेक्स सिंटैक्स केवल SQL सर्वर 2014 (और 2016 में कुछ भिन्नताएं) के साथ शुरू होता है:

यहाँ छवि विवरण दर्ज करें

अन्य उदाहरण, जहाँ यह सिंटेक्स आपके लिए काम कर रहा है, SQL Server 2014 या नए पर होना चाहिए।

संगतता स्तर की परवाह किए बिना 2012 में, आपको अलग से सूचकांक बनाने की आवश्यकता होगी।


-9

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


2
मुझे लगा कि जब मैंने पहली बार इसे देखा था तो यह बहुत अजीब लग रहा था, लेकिन यह हमारे सभी अन्य बॉक्सों पर ठीक काम करता है, जिसमें मेरे देव बॉक्स (वेनेक्स्ट तक) शामिल हैं। और दोनों इंडेक्स को ठीक बनाता है।
रिच बेन

शायद तब यह सर्वर पर चल रहे SQL सर्वर संस्करण, और / या डेटाबेस के SQL संगतता मोड से बंधा होता है? एसक्यूएल सर्वर ने वर्षों में बहुत सारे 'सिंटैक्टिक शुगर' जोड़े हैं। यदि आप बहुत दूर जाते हैं तो आप एक चर भी घोषित नहीं कर सकते हैं और इसे उसी पंक्ति में सेट कर सकते हैं।
मैथ्यू सैंटम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.