TEXTIMAGE_ON [PRIMARY] क्या है?


122

मैंने कई तालिकाओं पर काम किया और सभी को यह बात भा गई:

CREATE TABLE Persons(
    [id] [int] IDENTITY(1,1) NOT NULL,
    [modified_on] [datetime] NULL,
    [modified_by] [varchar](200) NULL,
) 
ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

TEXTIMAGE_ON [PRIMARY]SQL Server / Transact-SQL में क्या है ?


आप का अनुसरण कर सकते इस ..
Pugal

जवाबों:


46

से MSDN

TEXTIMAGE_ON {फ़ाइल समूह | "चूक" }

इंगित करता है कि पाठ, नेक्स्ट, छवि, xml, varchar (अधिकतम), nvarchar (अधिकतम), varbinary (अधिकतम), और CLR उपयोगकर्ता-परिभाषित प्रकार के कॉलम (ज्यामिति और भूगोल सहित) निर्दिष्ट फ़ाइलग्रुप पर संग्रहीत हैं।

यदि तालिका में कोई बड़े मान स्तंभ नहीं हैं, तो TEXTIMAGE_ON को अनुमति नहीं है। निर्दिष्ट होने पर TEXTIMAGE_ON को निर्दिष्ट नहीं किया जा सकता <partition_scheme>है। यदि "डिफ़ॉल्ट" निर्दिष्ट है, या यदि TEXTIMAGE_ON बिल्कुल निर्दिष्ट नहीं है, तो बड़े मान स्तंभ डिफ़ॉल्ट फ़ाइल समूह में संग्रहीत किए जाते हैं। क्रिएट टेबल में निर्दिष्ट किसी भी बड़े मूल्य के कॉलम डेटा के भंडारण को बाद में नहीं बदला जा सकता है।

नोट: इस संदर्भ में, डिफ़ॉल्ट कोई कीवर्ड नहीं है। यह डिफ़ॉल्ट फ़ाइलसमूह के लिए एक पहचानकर्ता है और इसे सीमांकित किया जाना चाहिए, जैसा कि TEXTIMAGE_ON "डिफ़ॉल्ट" या TEXTIMAGE_ON [डिफ़ॉल्ट] में है। यदि "डिफ़ॉल्ट" निर्दिष्ट है, तो वर्तमान सत्र के लिए QUOTED_IDENTIFIER विकल्प चालू होना चाहिए। यह डिफ़ॉल्ट सेटिंग है।


93
नहीं समझे!
मितुल शेठ

3
@ मितुलशेत: - आपके लिए क्या स्पष्ट नहीं है? मैनुअल यह सब बोलता है, इसका उपयोग फ़ाइलग्रुप में संग्रहीत प्रकारों को इंगित करने के लिए किया जाता है
राहुल त्रिपाठी

12
क्या कोई सरल स्पष्टीकरण दे सकता है। MSDN मेरे लिए थोड़ा ऊँचा लगता है!
मितुल शेठ

4
@RT क्या इसका मतलब है कि जब भी हम varchar (max) का उपयोग करते हैं तो हमें इसे निर्दिष्ट करना चाहिए? क्या होगा अगर हम नहीं?
मितुल शेठ

34
हमेशा की तरह, Microsoft विवरण वसंत ऋतु में मिसिसिपी नदी के पानी के रूप में स्पष्ट है।
सनकैट २२

209

यह देखते हुए कि प्रारूप है:

CREATE TABLE TableName(...) TEXTIMAGE_ON { filegroup | "default" }

TEXTIMAGE सभी बड़े / असीमित आकार के फ़ील्ड प्रकारों को संदर्भित करता है: टेक्स्ट, नेक्स्ट, छवि, xml, varchar (अधिकतम), nvarchar (अधिकतम), varbinary (अधिकतम), और CLR उपयोगकर्ता-निर्धारित प्रकार के कॉलम (ज्यामिति और भूगोल सहित)।

फिर, आपको यह जानना होगा कि फ़ाइलें और फ़ाइल समूह क्या हैं। डेटाबेस फ़ाइल और फ़ाइल समूह पर MSDN प्रविष्टि से :

फ़ाइल

कम से कम, प्रत्येक SQL सर्वर डेटाबेस में दो ऑपरेटिंग सिस्टम फ़ाइलें होती हैं: एक डेटा फ़ाइल और एक लॉग फ़ाइल। डेटा फ़ाइलों में डेटा और ऑब्जेक्ट्स जैसे टेबल, इंडेक्स, संग्रहीत कार्यविधियाँ और दृश्य होते हैं। लॉग फ़ाइलों में डेटाबेस में सभी लेनदेन को पुनर्प्राप्त करने के लिए आवश्यक जानकारी है। आवंटन और प्रशासन उद्देश्यों के लिए डेटा फ़ाइलों को एक साथ फाइलग्रुप में समूहीकृत किया जा सकता है।

filegroups

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

इसलिए,

CREATE TABLE ... ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

कुछ हद तक निरर्थक प्रतीत होगा, क्योंकि यह कह रहा है कि उल्लिखित बड़े-पाठ-मान स्तंभ प्राथमिक फ़ाइल समूह में संग्रहीत किए जाने चाहिए, जो वास्तव में डिफ़ॉल्ट क्रिया है।

कस्टम कस्टमग्रुप के अस्तित्व को CUSTOM कहा जाता है, तो आप शायद इस तरह से कुछ लिखेंगे:

CREATE TABLE ... ON [PRIMARY] TEXTIMAGE_ON [CUSTOM]

आप बड़े बाइनरी या टेक्स्ट को स्टोर करने के लिए एक कस्टम फ़ाइलग्रुप बनाएंगे, और इस मामले में 'सामान्य' फ़ील्ड जानकारी प्राथमिक फ़ाइलग्रुप में डेटा फ़ाइल में बैठेगी, जबकि संबद्ध 'बड़े' फ़ील्ड को भौतिक रूप से अलग डेटा फ़ाइल में संग्रहीत किया जाएगा। (द्वितीयक कस्टम फ़ाइल समूह में)।

आप ऐसा इसलिए करेंगे ताकि आप बड़े क्षेत्रों से (जो आनुपातिक रूप से अधिक डिस्क स्थान की आवश्यकता होगी) कोर रिलेशनल डेटामॉडेल (जो डिस्क स्पेस के संदर्भ में अपेक्षाकृत छोटे होंगे) को अलग कर सकते हैं - ताकि अलग संग्रह या प्रतिकृति रणनीतियों की अनुमति मिल सके। प्रत्येक फ़ाइल समूह पर लागू किया जाएगा।


39
इस प्रदान करने के लिए धन्यवाद बहुत स्वीकार किए जाते हैं एक से अधिक समझ में आता है इस सवाल का जवाब!
जीरो 3

12
@ मितुल शेठ ने कभी भी बेहतर सही उत्तर चुनने में देर नहीं की :)
उल्टा इंजीनियर

1

यदि आपके पास कोई बड़ा टेक्स्ट कॉलम यानी टेक्स्ट, नेक्स्ट, इमेज, xml, varchar (मैक्सिमम), nvarchar (मैक्सिमम), varbinary (मैक्स) और CLR नहीं है, तो आप बस इस्तेमाल कर सकते हैं:

CREATE TABLE Persons(
[id] [int] IDENTITY(1,1) NOT NULL,
[modified_on] [datetime] NULL,
[modified_by] [varchar](200) NULL,)ON [PRIMARY]

2
संदेश 156, स्तर 15, राज्य 1, पंक्ति 12 कीवर्ड 'टेबल' के पास गलत सिंटैक्स।
इंजीनियर

@ReversedEngineer सिंटैक्स त्रुटि अनावश्यक अल्पविराम के कारण होती है: [modified_by] [varchar](200) NULL
OrizG

@ ओरीजी ज़रूर बस उनके नमूना कोड को ठीक करने के लिए उत्तर के लेखक की मदद करना चाहता था। पूरी तरह से अजीब बात यह है कि अब मेरी मशीन (Microsoft SQL Server 2016 (SP2-CU12) (KB4536648) - 13.0.5698.0 (X64) पर सिंटैक्स त्रुटि देता है
उलटा इंजीनियर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.